簡體   English   中英

在Qt中創建SQLite數據庫(C ++)

[英]Create SQLite Database in Qt (C++)

我正在嘗試在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:\\ Users \\ Tanner \\ qt \\ sqltest-build-desktop .. \\ sqltest \\ main.cpp:11:錯誤:對` imp __ZN12QSqlDatabaseD1Ev'的未定義引用

C:\\ Users \\ Tanner \\ qt \\ sqltest-build-desktop .. \\ sqltest \\ main.cpp:11:錯誤:對` imp __ZN12QSqlDatabaseD1Ev'的未定義引用

:-1:錯誤:collect2:ld返回1退出狀態

我確定我做錯了,因為這是我第一次嘗試在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時尚未創建此驅動程序,則可能必須自己構建它。 您可以按照上面提供的鏈接中的說明進行操作。

提醒您,您已經正確處理了“字符轉義”問題。 這不是您當前問題的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM