QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
編譯無問題,在執行時終端出現以下字母
執行中的數據庫操作如下
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:/workspace/GData.s3db");
if(!db.open())
{
cout<<"open database failed!"<<endl;
return 0;
}
QSqlQuery query("select XmlValue from GBond where BondId=3", db);
if (query.next())
{
QString stringXml = query.value(0).toString();
//do something

}
db.close();
QSqlDatabase::removeDatabase("QSQLITE");經查,是由于在數據庫使用過程中,又再次調用QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 造成了問題。
因此在其他地方的數據庫操作中修改此代碼。
可以在執行QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 不用默認的defaultConnection,自己加入名字,然后在每次的添加時可改為:
QSqlDatabase db;
if(QSqlDatabase::contains("GBond"))
db = QSqlDatabase::database("GBond");
else
db = QSqlDatabase::addDatabase("QSQLITE", "GBond");這樣該問題已解決。
但再次執行時出現了
經查,這是由于在執行query.exec時沒有指定db。將所有執行query.exec改為
//原來
QSqlQuery query;
query.exec("select XmlValue from GPlatform");
//改為
QSqlQuery query("select XmlValue from GPlatform", db);這樣就可以了。
posted on 2010-12-31 09:29 seahouse 閱讀(12610) 評論(1) 編輯 收藏 引用 所屬分類: Qt

