2015-06-11 62 views
0

我試圖使用QSqlQueryModel以檢索從我的數據庫的一些值喜歡這樣:QSqlQueryModel抱怨說,我的數據庫沒有打開

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL", "test1"); 
db.setHostName(Vars::strDbHost); 
db.setDatabaseName(Vars::strDbName); 
db.setPort(Vars::strDbPort); 
db.setUserName(Vars::strDbUsername); 
db.setPassword(Vars::strDbPassword); 

db.open() 

QSqlQueryModel model; 
model.setQuery(QString("SELECT * FROM users WHERE login=%2").arg(Vars::strUserLogin)); 

但我不斷收到一個QSqlQuery::exec: database not open錯誤。

這是爲什麼,我該如何正確使用QSqlQueryModel來檢索我想要的值?

+0

'如果qDebug()<< db.lastError()文本();'(db.open()!)。另外,你在哪裏設置你的數據庫爲模型? – Amartel

+0

我沒有在問題中添加它,但我確實確保數據庫已打開並且不返回任何錯誤。我實際上嘗試過同樣的事情,但用查詢,並沒有問題。 – dearn44

+1

您正在調用'setQuery'的錯誤版本。這隻適用於具有默認名稱的db。在你的情況下,你需要調用'void \t setQuery(const QString&query,const QSqlDatabase&db)' – Amartel

回答

0

您打錯了setQuery的版本。這隻適用於具有默認名稱的db。在你的情況,你需要調用void QSqlQueryModel::setQuery(const QString &query, const QSqlDatabase &db)

model.setQuery(QString("SELECT * FROM users WHERE login=%2").arg(Vars::strUserLogin) 
       , db);