我無法使用我的qt應用程序連接到我的sqlite數據庫。 我有一個輔助類DBManager,應該有打開和關閉數據庫的功能,因爲我想重複使用多個地方的代碼。 這裏是dbmanager.cpp使用qt連接到SQLite數據庫
DBManager::DBManager()
{
}
void DBManager::connOpen()
{
path = QCoreApplication::applicationDirPath() + "/GameSuitedb.db";
mydb=QSqlDatabase::addDatabase("QSQLITE");
mydb.setDatabaseName(path);
void DBManager::connClose() /*Closes connection and commits changes to database*/
{
mydb.close();
mydb.removeDatabase(QSqlDatabase::defaultConnection);
}
注意我的數據庫名爲GameSuitedb和毗鄰的可執行 而這裏就是我試圖訪問我的數據庫:
void CreateUser::on_pushButton_submit_clicked()
{
dbmanager.connOpen();
QString username = ui->lineEdit_username->text();
QString password = ui->lineEdit_password->text(); //Gets password text
QSqlQuery qry(dbmanager.mydb);
qry.prepare("INSERT INTO users (username,password) VALUES ('"+username+"', '"+password+"')");
if(qry.exec()){
}
else{
ui->statusbar->showMessage(qry.lastError().text());
}
dbmanager.connClose();
}
的錯誤上面的代碼在啓動時給了我QSqlQuery :: prepare:數據庫未打開。
您是否在調試器中驗證了路徑變量是您認爲的?另外,請閱讀如何使用準備好的查詢 - 您當前的代碼包含SQL注入攻擊的明顯機會。 – MrEricSir
如果數據庫文件不存在於文件夾中,qt中的sqlite支持至少會嘗試創建一個新的數據庫。 – drescherjm