QSqlQuery :: exec:数据库未打开

时间:2013-06-01 01:09:28

标签: database qt qtsql

我正在研究qt,我的数据库与qt正确连接但突然我每次调试时都有以下问题,,, ii变得无法获取或从数据库中添加数据,,, i不知道什么事情,但我是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();
//==================================================================================

2 个答案:

答案 0 :(得分:1)

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

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

  1. 检查dll引用的项目设置(在项目的.pro文件中,你必须放QT + = sql,如果你使用Visual Studio集成,你检查项目设置表单属性中的引用)
  2. 检查Qtdirectory的驱动程序文件夹和dll的
  3. 如果您要分发您的应用程序,您只需复制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();
    

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

答案 1 :(得分:1)

QSqlQuery *query = new QSqlQuery(db);

我认为可以帮到你! :)