gpt4 book ai didi

c++ - QT QSqlDatabase open()函数创建sqlite数据库

转载 作者:行者123 更新时间:2023-11-27 22:51:07 26 4
gpt4 key购买 nike

我正在尝试使用 .open() 函数在 QT 中打开一个 sqlite 数据库文件,如果文件没有退出,.open() 不会返回 false,它只是在给定的位置创建一个新文件目录。我的代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:/sqlite/newDB.db");

if(!db.open()){
ui->test->setText("Fail");
}
else{
ui->test->setText("Success");
}

如何让它返回 true 或 false ?

最佳答案

你不能让它返回 true 或 false,这就是它的工作原理。 . .

但是,您可以在使用 QFile::exists("C:\\sqlite\\newDB.db") 打开数据库之前检查文件是否存在。之后,如果它存在,您可以尝试这样的查询以确保它没有损坏:

QSqlQuery q;
if(!q.exec("SELECT name, sql FROM sqlite_master WHERE type='table' ;")){
//corrupt sqlite file
}

最终代码可能是这样的:

if(!QFile::exists("C:\\sqlite\\newDB.db")){
//file does not exist
}
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:\\sqlite\\newDB.db");
if(!db.open()){
//Database open error
}
{
QSqlQuery q;
if(!q.exec("SELECT name, sql FROM sqlite_master WHERE type='table' ;")){
//corrupt or invalid sqlite file
}

关于c++ - QT QSqlDatabase open()函数创建sqlite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37094492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com