用Qt(C ++)创建SQLite数据库

时间:2011-07-27 20:50:08

标签: c++ database qt sqlite database-connection

我正在尝试在Qt中创建一个SQLite数据库。这是我的代码:

#include <QtCore/QCoreApplication>
#include <QtSql/QSqlDatabase>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("C:\\Users\\Tanner\\Desktop\\db.sqlite");

    return a.exec();
}

然而,它不起作用。这是我收到的输出:

  

C:\ Users \ Tanner \ qt \ sqltest-build-desktop .. \ sqltest \ main.cpp:8:错误:   未定义的引用` imp __ ZN12QSqlDatabase17defaultConnectionE'

     

C:\ Users \ Tanner \ qt \ sqltest-build-desktop .. \ sqltest \ main.cpp:8:错误:   未定义的引用` imp __ ZN12QSqlDatabase11addDatabaseERK7QStringS2 _'

     

C:\ Users \ Tanner \ qt \ sqltest-build-desktop .. \ sqltest \ main.cpp:8:错误:   未定义的引用` imp __ ZN12QSqlDatabaseD1Ev'

     

C:\ Users \ Tanner \ qt \ sqltest-build-desktop .. \ sqltest \ main.cpp:9:错误:   未定义的引用` imp __ ZN12QSqlDatabase15setDatabaseNameERK7QString'

     

C:\用户\唐纳\ QT \ sqltest语句-集结桌面.. \ sqltest语句\ main.cpp中:11:   错误:未定义引用` imp __ ZN12QSqlDatabaseD1Ev'

     

C:\用户\唐纳\ QT \ sqltest语句-集结桌面.. \ sqltest语句\ main.cpp中:11:   错误:未定义引用` imp __ ZN12QSqlDatabaseD1Ev'

     

: - 1:错误:collect2:ld返回1退出状态

我确信我做错了,因为这是我第一次尝试使用C ++ / Qt中的数据库。非常感谢任何有关创建数据库的帮助!我在文件路径中添加了一个额外的斜杠,因为编译器一直在抱怨字符转义。额外的斜杠可以与它有关吗?如果是这样,我怎么能进入路径而不想它试图逃避下一个角色。

2 个答案:

答案 0 :(得分:8)

在没有开始工作之后,我查看了Qt社区论坛,似乎我所缺少的是

  

QT + = sql

<。>文件中的

以下是论坛帖子:http://developer.qt.nokia.com/forums/viewthread/8262/

答案 1 :(得分:3)

您看到的错误不是编译器错误,而是链接器错误。错误本身与SQLite无关,而与Qt无关。您很可能不会链接到QtSql4.lib(4可能是不同的版本号)。这样做很可能会使你看到的错误消失。

作为对您的评论/问题的回答,您(在您的应用程序级别上)根本不必担心SQLite。由于您使用Qt的SQL功能,Qt将对此进行处理(并“隐藏”)。 Qt使用所谓的database drivers,它基本上是根据你在代码中指定的内容加载的插件。所以你的SQLite驱动程序。

如果在安装Qt时尚未创建此驱动程序,则可能需要自行构建。您可以按照我在上面提供的链接中找到的说明进行操作。

P.S。你已经正确处理了“字符转义”问题。这不是您当前问题的原因。