我正在尝试在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中的数据库。非常感谢任何有关创建数据库的帮助!我在文件路径中添加了一个额外的斜杠,因为编译器一直在抱怨字符转义。额外的斜杠可以与它有关吗?如果是这样,我怎么能进入路径而不想它试图逃避下一个角色。
答案 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。你已经正确处理了“字符转义”问题。这不是您当前问题的原因。