当我们输入
时,在我们的sql lite终端中SELECT * FROM Measures
我们从数据库中的measure OMBI.db
获取所有内容。
但现在我们想通过QT C ++ GUI开发平台连接数据库。为此,我们使用以下代码:
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("/Desktop/project/src/OMBI.db");
bool db_ok = db.open();
qDebug() << db_ok;
QSqlQuery query;
//query.exec("SELECT * FROM Measures");
if(query.exec("SELECT * FROM Measures")){
while(query.next()){
qDebug() << query.value(0).toInt();
}
qDebug() << query.lastError().text();
qDebug() << "Inside First if Statement";
}
else
{
qDebug() << query.lastError().text();
}
请注意,GUI项目的所有核心代码都放在desktop/project/src
下,我们还在其中放置了OMBI.db
数据库文件。
从其他问题我们得知,如果我们成功打开数据库,行qDebug() << db_ok;
将返回true。认为它已经返回真实,我们认为我们的问题将在我们查询的if
语句中。但我们发现,无论我们设置db.setDatabaseName("");
,它都将返回true。我们的问题可能是什么?我确信我们没有正确读取数据库,因为如果我们输入db.setDatabaseName("non_existent_random_file");
,我们仍然可以实现。
编辑:
我们在查询时也会遇到以下错误:
"no such table: Measures Unable to execute statement"
有什么想法吗?
答案 0 :(得分:1)
如果数据库不存在,它将创建数据库。可能你的道路是错的。你不应该有db.setDabaseName(“/ home / userName / Desktop /.....)?