0
#include <QtGui>
#include <QtSql>
#include <QApplication>
class ABC {
public:
QSqlDatabase db;
QSqlQuery memberQuery;
ABC() {
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test");
qDebug() << "Database open test : " << db.open();
}
void database() {
qDebug() << "Inside database method..." << endl;
QSqlQuery localQuery ;
qDebug() << "Using local Query : " << localQuery.exec("create table if not exists alu (ini int)");
localQuery.clear();
qDebug() << "Using memeber query object: " << memberQuery.exec("create table if not exists alu (ini int)");
memberQuery.clear();
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
ABC ob;
ob.database();
return a.exec();
}
執行此代碼後發現以下結果。由於QSqlQuery對象範圍導致的Qt數據庫錯誤
Database open test : true
Inside database method...
Using local Query : true
QSqlQuery::exec: database not open
Using memeber query object: false
我的問題是爲什麼我不能使用成員對象QSqlQuery而不是本地的?
那麼爲什麼本地對象的工作不用其他與DB initializaing? – Dewsworld 2012-03-26 08:23:03
它的工作原理是因爲在添加數據庫之後,它成爲默認連接,因此之後創建的任何'QSqlQuery'都將使用它。當使用類屬性時,QSqlQuery在創建默認數據庫連接之前被實例化。 – Koying 2012-03-26 09:50:16