我无法使用qt应用程序连接到我的sqlite数据库。 我有一个辅助类DBManager,它应该具有打开和关闭数据库的功能,因为我想在多个地方重用代码。 这是dbmanager.cpp
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:数据库未打开。
答案 0 :(得分:4)
错误代码告诉您数据库未打开,因为您的auto pair_view =
ranges::view::zip(lines | ranges::view::take(lines.size() - 1),
lines | ranges::view::drop(1));
for (auto&& p : pair_view)
{
p = removeOverlap(p);
}
函数似乎正在执行除实际打开数据库之外的所有操作,这与它的命名方式相反。
您需要在DBManager::connOpen()
函数末尾调用QSqlDatabase::open()
,以便数据库打开并准备好使用。
DBManager::connOpen()