我需要在本地系统上给我的系统带来一些价值,然后以表格格式访问它,所以我选择了QSqlDatabase。而作为第一个我必须检查数据库已经存在。但是使用下面的代码我总是收到消息Data base not exist creating new....
可能是什么问题?
#include <QtCore/QCoreApplication>
#include <QtSql/QSqlDatabase>
#include "QFile"
#include "QDebug"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString dbName = "lprDB";
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
if( QFile::exists(dbName))
{
qDebug()<<"Data base exist....";
}
else {
qDebug()<<"Data base not exist creating new....";
db.setDatabaseName(dbName);
}
return a.exec();
}
答案 0 :(得分:1)
如@Armatel所述,您应该打开db,这将创建db文件。
#include <QtCore/QCoreApplication>
#include <QtSql/QSqlDatabase>
#include "QFile"
#include "QDebug"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString dbName = "lprDB";
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
if( QFile::exists(dbName))
{
qDebug()<<"Data base exist....";
}
else {
qDebug()<<"Data base not exist creating new....";
db.setDatabaseName(dbName);
db.open(); // <<< Add this!
if(!db.isOpen()) {
qDebug() << "ERROR: could not open database";
}
qDebug() << "DB opened";
}
return a.exec();
}
答案 1 :(得分:0)
可能addDatabase将数据库创建到与QFile :: exists检查不同的目录。
我的理解是QSqlDatabase将数据库创建到标准数据位置文件夹,可以通过以下方式获得:
QStringList dataLocations = QStandardPaths::standardLocations(QStandardPaths::DataLocation);
QString dataLocationPath = dataLocations.at(0);
所以,也许检查
QFile::exists(dataLocationPath+"/"+dbName)
有助于?