在Qt (c++)中创建SQLite数据库

Create SQLite Database in Qt (C++)

本文关键字:创建 SQLite 数据库 Qt c++      更新时间:2023-10-16

我试图在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: qt sqltest-build-desktop . . sqltest main.cpp: 8:错误:imp__ZN12QSqlDatabase17defaultConnectionE'未定义引用

坦纳用户

C: qt sqltest-build-desktop . . sqltest main.cpp: 8:错误:对'imp__ZN12QSqlDatabase11addDatabaseERK7QStringS2_'的未定义引用

坦纳用户

C: qt sqltest-build-desktop . . sqltest main.cpp: 8:错误:对'imp__ZN12QSqlDatabaseD1Ev'的未定义引用

坦纳用户

C: qt sqltest-build-desktop . . sqltest main.cpp: 9:错误:imp__ZN12QSqlDatabase15setDatabaseNameERK7QString'的未定义引用

坦纳用户

C: qt sqltest-build-desktop . . sqltest main.cpp: 11:错误:未定义引用'imp__ZN12QSqlDatabaseD1Ev'

坦纳用户

C: qt sqltest-build-desktop . . sqltest main.cpp: 11:错误:未定义引用'imp__ZN12QSqlDatabaseD1Ev'

:-1: error: collect2: ld returned 1 exit status

我确信我做错了什么,因为这是我第一次尝试在c++/Qt数据库工作。在创建数据库的任何帮助是非常感激的!我在文件路径中添加了一个额外的斜杠,因为编译器一直抱怨字符转义。额外的斜杠会不会与此有关?如果是这样,我怎样才能在输入路径时不让它认为我试图转义下一个字符呢?

没有得到它的工作后,我检查了Qt社区论坛,似乎所有我错过的是

QT += sql
.pro文件

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

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

作为你的评论/问题的答案,你(在你的应用程序级别)根本不必担心SQLite。因为你使用Qt的SQL功能,这将被Qt照顾(和"隐藏"),Qt使用所谓的数据库驱动程序,本质上是插件,它加载基于你在代码中指定的。所以在你的例子中是一个SQLite驱动程序。

如果在您安装Qt时没有创建这个驱动程序,您可能必须自己构建它。你可以按照我上面提供的链接中的说明去做。

注。您已经正确处理了"字符转义"问题。这不是你当前问题的原因。