2

我正在使用 qt,我的数据库与 qt 正确连接,但是每次调试时突然出现以下问题,,,ii 变得无法从/向数据库中获取或添加数据,,,我不知道怎么回事,但我是 qt 的新手。

QSqlQuery::exec: 数据库未打开

有人可以帮忙吗,这是紧急情况,这里是代码

db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:/Users/user/Desktop/Final_Version/db.accdb");
db.close();
db.open();
QSqlQuery query;
query.exec("Select ID from TestId");
while(query.next())
{
 TestId = query.value(0).toInt();
}
db.close();
//==================================================================================
4

2 回答 2

5
QSqlQuery *query = new QSqlQuery(db);

我认为这可以帮助你!:)

于 2014-01-28T11:22:15.110 回答
1

您需要在 sqldrivers 文件夹中为 Microsoft Access Driver 添加 qsql dll 文件

如果您正在调试,请检查以下内容

  1. 检查您的项目设置以获取 dll 参考(在项目的 .pro 文件中,您必须输入 QT += sql,如果您使用 Visual Studio 集成,请检查项目设置表单属性中的参考)
  2. 检查您的 Qtdirectory 以获取驱动程序文件夹和 dll

如果您正在分发您的应用程序,您只需复制 sql 驱动程序文件夹以及您的可执行文件以及所需的 dll。

编辑与数据库连接绑定的 QSqlQuery 对象

db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb};FIL={MSAccess};DBQ=C:/Users/user/Desktop/Final_Version/db.mdb");
database.open();
QSqlQuery query(db);
query.exec("Select ID from TestId");
while(query.next())
{
    TestId = query.value(0).toInt();
}
db.close();

我认为,其中一些会帮助你...... :)

于 2013-06-01T09:57:01.797 回答