qsqlquery exec失败model 是否有上限

  图1  而显然通常SQLite数据库中不止只有256个数据,像在我这个程序中,我的SQLite数据库中存了935个数据,如图2:  图2  源代码如下:bool HydrologicDataDisplay::updataquerymodel(){QSqlQueryModel *Model = new QSqlQueryMQString selectfromtable = "select time,gaugingstation,stage,flow,windspeed,visibility,temperature from hydrologicdata"; & & & & Model-&setQuery(selectfromtable);Model-&setHeaderData(0,Qt::Horizontal,tr("日期"));Model-&setHeaderData(1,Qt::Horizontal,tr("测站"));Model-&setHeaderData(2,Qt::Horizontal,tr("水位(m)"));Model-&setHeaderData(3,Qt::Horizontal,tr("流量(m3/s)"));Model-&setHeaderData(4,Qt::Horizontal,tr("风速"));Model-&setHeaderData(5,Qt::Horizontal,tr("能见度"));Model-&setHeaderData(6,Qt::Horizontal,tr("温度(℃)"));tableView-&setModel(Model);}浠涔堟槸QSqlDatabase锛哘SqlQuery鐨勬纭柟娉曟槸浠涔堬紵-鏁版嵁搴揹atabase,qt,qt4,qtsql-CodeGo.net
浠涔堟槸QSqlDatabase锛哘SqlQuery鐨勬纭柟娉曟槸浠涔堬紵
鎴戠敤鎵嬪姩浜嗭紝鎴戝簲璇ュ儚杩欐牱宸ヤ綔锛
QSqlDatabase db = QSqlDatabase::addDatabase (...);
QSqlQuery query (db);
query.exec (...);
QSqlDatabase::removeDatabase (...);
姝e鎸囧嚭鐨勶紝query鎴db灏嗚嚜鍔ㄨВ鏋勩
浣嗘槸锛岃繖鏄湁鏁堢殑锛
濂藉惂锛屽鏋滄垜缂撳瓨db涓涓被閲岄潰锛屽涓嬫墍绀猴細
class Dummy {
db = QSqlDatabase::addDatabase (...);
~Dummy() {
db.close();
bool run() {
QSqlQuery query (db);
bool retval = query.exec (...);
blabla ...
鎴戝彲浠ョ湅鍒扮被浼肩殑璀﹀憡锛
QSqlDatabasePrivate::removeDatabase: connection 'BLABLA' is still in use, all queries will cease to work.
鍗充娇鎴戞病鏈夋墦鐢佃瘽run()銆
鏈枃鍦板潃 锛欳odeGo.net/363608/
-------------------------------------------------------------------------------------------------------------------------
1. 褰撲綘鍒涘缓涓涓QSqlDatabase涓庡璞addDatabase鎴栬呭綋浣犺皟鐢removeDatabase锛屼綘鍏宠仈鎴栧彇娑堝叧鑱旂殑鍏冪粍锛堥┍鍔ㄧ▼搴忥紝鏁版嵁搴撶殑锛堟垨榛樿鐨勮繛鎺ワ紝濡傛灉浣犱笉鎸囧畾杩炴帴鐨凷QL椹卞姩绋嬪簭琚疄渚嬪寲锛屼絾鏄暟鎹簱鏃讹紝鎵嶄細鎵撳紑锛屽綋浣犺皟鐢QSqlDatabase::open銆
璇ヨ繛鎺ユ槸鎸囧簲鐢ㄧ▼搴忚寖鍥淬傛墍浠 CodeGo.net锛屽鏋滀綘璋冪敤addDatabase鍦ㄦ瘡涓涓璞★紝浣犳鍦ㄦ敼鍙樹竴鍒QSqlDatabase瀵硅薄杩炴帴鍜屾棤鏁堢殑娲昏穬瀵逛粬浠殑鎵鏈夋煡璇
浣犳彁鍒扮殑浼樺厛涓唬鐮佺ず渚嬫紨绀哄浣曟纭湴閫氳繃纭繚鎾囨竻杩炴帴锛
鎵鏈QSqlQuery浠庤鍒嗙QSqlDatabase閫氳繃璋冪敤鍏抽棴鏁版嵁搴撲箣鍓QSqlQuery::finish()锛岃繖鏄嚜鍔ㄧ殑锛屽綋QSqlQuery瀵硅薄瓒呭嚭鑼冨洿锛
鎵鏈QSqlDatabase涓庤杩炴帴鏄close()D褰撲綘璋冪敤QSqlDatabase::removeDatabase锛close()涔熻绉颁负鏃惰嚜鍔QSqlDatabase瀵硅薄瓒呭嚭鑼冨洿锛夈
褰撴偍鍒涘缓鐨凲SqlDatabase锛岃繖鍙栧喅浜庝綘鏄惁甯屾湜杩炴帴淇濇寔鎵撳紑鐨勫簲鐢ㄧ▼搴忥紙1锛夋垨浠呭湪闇瑕佹椂锛2锛夛紝鎮ㄥ彲浠ワ細
淇濇寔涓涓崟涓鐨QSqlDatabase渚嬪鍦ㄤ竴涓壒瀹氱殑绫伙紙渚嬪锛屽湪浣犵殑涓荤獥鍙o級鏃讹紝鍦ㄥ叾瀹冪殑鐩殑锛岄渶瑕佸畠鎴栬呴氳繃灏QSqlDatabase鐩存帴鎴栬呭彧鏄紶閫掔粰杩炴帴QSqlDatabase::database寰楀埌QSqlDatabase渚嬪鍥炴潵銆QSqlDatabase::database鐢ㄩQHash妫绱QSqlDatabase浠庡畠鎵浠ュ畠鍙兘鏄彲浠ュ拷鐣ヤ笉璁′笉鏄紶閫掔殑鎱QSqlDatabase瀵硅薄鍜屽嚱鏁颁箣闂寸殑鐩存帴瀵硅薄锛屽鏋滀綘榛樿鐨勮繛鎺ワ紝浣犵敋鑷充笉蹇呭湪浠讳綍鍦版柟閫氳繃浠讳綍浜嬫儏锛屽彧闇瑕佽皟鐢QSqlDatabase::database()娌℃湁浠讳綍
// In an object that has the same lifetime as your application
// (or as a global variable, since it has almost the same goal here)
// In the constructor or initialization function of that object
db = QSqlDatabase::addDatabase("QSQLDRIVER", "connection-name");
db.setHostname(...);
if(!this-&db.open()) // open it and keep it opened
// Error handling...
// --------
// Anywhere you need it, you can use the "global" db object
// or get the database connection from the connection name
QSqlDatabase db = QSqlDatabase::database("connection-name");
QSqlQuery query(db);
閰嶇疆QSqlDatabase涓娆★紝鎵撳紑瀹冩潵娴嬭瘯鏄惁姝g‘锛屾矡瀹炰緥銆傝杩炴帴灏嗕粛鐒跺彲浠ヨ闂换浣曞湴鏂癸紝浣嗘暟鎹簱灏嗕笉寰椾笉閲嶆柊鎵撳紑锛
// Allocated on the stack
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLDRIVER", "connection-name");
db.setHostname(...);
if(!this-&db.open()) // test the connection
// Error handling
// db is closed when it goes out of scope
// Same thing as for (1), but by default database() opens
// the connection if it isn't already opened
QSqlDatabase db = QSqlDatabase::database("connection-name");
QSqlQuery query(db);
// if there is no other connection open with that connection name,
// the connection is closed when db goes out of scope
鍦ㄨ繖绉嶆儏鍐典笅锛岃娉ㄦ剰锛屼綘涓嶅簲璇ユ樉寮忓湴鍏抽棴鏁版嵁搴撴椂锛屼綘鍙互鍦ㄤ竴涓彲閲嶅叆鐨勬柟寮忓涓暟鎹簱杩炴帴锛堜緥濡傦紝濡傛灉涓涓嚱鏁扮殑杩炴帴骞惰皟鐢˙鐨勮繛鎺ャ傚鏋淏鍏抽棴杩斿洖鎺у埗涔嬪墠鐨勮繛鎺ュ埌A锛岃繛鎺ヤ篃灏嗚鍏抽棴浜嗭紝杩欏彲鑳芥槸涓浠跺潖浜嬶級銆
QSqlDatabase鍜孮SqlQuery鏄洿缁曞叿浣撶殑杞婚噺绾х殑鍖呰锛屼互渚挎偍鐨勪紭鍏堜釜渚嬪瓙鏄ソ鐨勩傚鏋滄偍娣诲姞鐨勮繛鎺ワ紝榛樿鐨勬暟鎹簱锛岀劧鍚庣畝鍗曞湴鍐'QSqlDatabase鍒嗚礉锛堣浣犵敤寰堝皯鐨勫紑閿鏁版嵁搴撳璞℃椂鎻愪緵銆
removeDatabase鐩稿綋浜庡叧闂鏂囦欢锛坰qlite鐨勶級鎴栬繛鎺ワ紙鐢ㄤ簬ODBC / MySQL鐨/ Postgres鐨勶級锛屾墍浠ヨ繖灏辨槸閫氬父浣犱細鍋氬湪绋嬪簭缁堟銆備綔涓鸿鍛婅锛屽繀椤荤‘淇濆畠鎸囩殑鏄暟鎹簱涓殑鎵鏈夋暟鎹簱鍜屾煡璇㈠璞★紝宸茬粡琚牬鍧忎簡锛屾垨鑰呭潖鐨勪簨鎯呴兘鍙兘鍙戠敓銆
鎴戝彂鐜帮紝鎸囩ず蹇呴』鍦ㄥ畠涓嬮潰锛屽惁鍒欎綘鏈夐棶棰橈紝瑕佷箞涓庢暟鎹簱杩炴帴鎴栨煡璇㈢殑椤哄簭姝eソ杩愯銆傝繖閫傜敤浜嶲T5銆
QSqlQueryModel *model = new QSqlQueryM
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(fileName);
if (db.isValid())
db.open();
if (db.isOpen())
QSqlQuery searchQuery(db);
searchQuery.prepare("SELECT * FROM myTable");
searchQuery.exec();
if(searchQuery.isActive())
model-&setQuery(searchQuery);
sui-&DBDisplay-&setModel(model);
db.close();
qDebug() && "query is not active";
qDebug() && "DB is not open";
qDebug() && "DB is not valid";
鏈枃鏍囬 锛氫粈涔堟槸QSqlDatabase锛哘SqlQuery鐨勬纭柟娉曟槸浠涔堬紵
鏈枃鍦板潃 锛欳odeGo.net/363608/
Copyright 漏 2014 CodeGo.netQt中数据库QSqlQuery该怎么定义啊??急求_百度知道
Qt中数据库QSqlQuery该怎么定义啊??急求
&+ui-&gt.db&)这样编译怎么错了呢void MainWwarn&quot:addDatabase(&;QSQLITE&text()),&/
query *obj=new query():information(this.exec(&
obj-&show();
QSqlQ):information():;
QMessageBox,&quot.setDatabaseName(&select * from quanbu where zh=&quot:;:;).open())
/QMessageBwarning&YES&NO&
if(keytxt-&gt,&quot::on_pushButton_clicked(){
QSqlDatabase db = QSqlDatabase
提问者采纳
&nbsp&&nbsp.text());&{&&&&&QSQLITE&&&=&&lastError(),&&&&&&&&&&&*&&&&&nbsp.open();&&&&nbsp:;&select&nbsp:&QSqlDatabase&&QString&QDebug()&);&}&QSqlQueryModel&&&delete&&db&&*model&=&&nbsp.db&&&&&(model-&&model-&&&&&nbsp:addDatabase(&);&}&&sql(&&else&if&&Query&QSqlQueryModel();&//输出model数据&=&qPrintable(model-&&);&&nbsp.isValid())&Error.setDatabaseName(&setQuery(&&&&&&&&&&&{&&&&from&db);0;quanbu&model&&&QSqlD&&&&lastError();&&&//close&new&nbsp
提问者评价
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁由qsqlquerymodel读来的数据显示在qtableview中 表头怎么改呢?
[问题点数:30分,结帖人gldcpp]
由qsqlquerymodel读来的数据显示在qtableview中 表头怎么改呢?
[问题点数:30分,结帖人gldcpp]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2015年11月 移动开发大版内专家分月排行榜第三
2015年11月 移动开发大版内专家分月排行榜第三
2015年11月 移动开发大版内专家分月排行榜第三
2015年11月 移动开发大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 qt数据库qsqlquery 的文章

 

随机推荐