C++ 如何将SQLite嵌入C++;项目

C++ 如何将SQLite嵌入C++;项目,c++,qt,C++,Qt,我正在尝试将SQLite嵌入到我的项目中。我已将以下文件包括到名为lite的目录中:sqlite3.dll、sqlite3.h和sqlite3.lib 这是我的项目: #include <stdio.h> #include <lite/sqlite3.h> int main(int argc, char* argv[]) { sqlite3 *db; char *zErrMsg = 0; int rc; rc = sqlite3_open("t

我正在尝试将SQLite嵌入到我的项目中。我已将以下文件包括到名为lite的目录中:sqlite3.dll、sqlite3.h和sqlite3.lib

这是我的项目:

#include <stdio.h>
#include <lite/sqlite3.h>

int main(int argc, char* argv[])
{
   sqlite3 *db;
   char *zErrMsg = 0;
   int rc;

   rc = sqlite3_open("test.db", &db);

   if( rc ){
      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
      return(0);
   }else{
      fprintf(stderr, "Opened database successfully\n");
   }
   sqlite3_close(db);
}
我可能做错了什么

我在Qt工作。这是我的.pro文件:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lite/ -lsqlite3
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lite/ -lsqlite3d
else:unix: LIBS += -L$$PWD/lite/ -lsqlite3

INCLUDEPATH += $$PWD/lite
DEPENDPATH += $$PWD/lite

既然您已经在使用Qt,为什么不使用?您将省去很多痛苦,只需添加

QT += sql
添加到Qt项目文件,并添加

#include <QtSql>
#包括
给你调查文件。您将拥有许多模型视图类,这些类有助于将数据库集成到应用程序UI中


这是在Qt应用程序中使用SQL的推荐方法,除非您有非常特殊的需求。您可以让Qt在后台使用不同的SQL引擎(SQLite、MySQL等等),但Qt将为您抽象所有这些

既然您已经在使用Qt,为什么不使用?您将省去很多痛苦,只需添加

QT += sql
添加到Qt项目文件,并添加

#include <QtSql>
#包括
给你调查文件。您将拥有许多模型视图类,这些类有助于将数据库集成到应用程序UI中


这是在Qt应用程序中使用SQL的推荐方法,除非您有非常特殊的需求。您可以让Qt在后台使用不同的SQL引擎(SQLite、MySQL等等),但Qt将为您抽象所有这些

尽管为时已晚,但我认为有几个问题在这个问题中被完全忽略了,尽管解决方法是可行的

  • 错误很明显。。链接器找不到在qmake
    .pro
    文件中配置的lib
    lsqlite3d
    的“调试”版本。获取lib的“debug”文件,或者从
    .pro
else:win32:CONFIG(debug,debug | release):LIBS+=-L$$PWD/lite/-lsqlite3d

在Qt中添加库时,这似乎是一个常见错误。。有这样一个选项:

为调试版本添加“d”后缀

当库没有调试版本时,必须取消选择此选项

  • 第二,也是这个答案的本质,因为SQLite是用C编写的,所以 部分不正确,无法工作;必须更正为:

    extern“C”{

    #包括

    }

随着这两个问题的纠正。。在Qt中添加SQLite库,或者通常添加任何C库,应该不会有问题


实际上,对于像SQLite这样的小代码,另一种选择是使用项目静态编译它。。只需将
sqqlite3.h
sqlite3.c
添加到Qt项目中,并在
.pro
中删除到
sqlite3.lib
的链接。。随着include部分的更新。

尽管为时已晚,我认为这里有几个问题在这个问题中被完全忽略了,尽管解决方法是可行的

  • 错误很明显。。链接器找不到在qmake
    .pro
    文件中配置的lib
    lsqlite3d
    的“调试”版本。获取lib的“debug”文件,或者从
    .pro
else:win32:CONFIG(debug,debug | release):LIBS+=-L$$PWD/lite/-lsqlite3d

在Qt中添加库时,这似乎是一个常见错误。。有这样一个选项:

为调试版本添加“d”后缀

当库没有调试版本时,必须取消选择此选项

  • 第二,也是这个答案的本质,因为SQLite是用C编写的,所以 部分不正确,无法工作;必须更正为:

    extern“C”{

    #包括

    }

随着这两个问题的纠正。。在Qt中添加SQLite库,或者通常添加任何C库,应该不会有问题


实际上,对于像SQLite这样的小代码,另一种选择是使用项目静态编译它。。只需将
sqqlite3.h
sqlite3.c
添加到Qt项目中,并在
.pro
中删除到
sqlite3.lib
的链接。。包含部分已更新。

是否可以通过浏览器以任何方式在GUI中查看Qt SQL数据库?是的,请查看
QSqlTableModel
,SQL模块与Qt模型视图框架配合良好。是否可以通过浏览器以任何方式在GUI中查看Qt SQL数据库?是,看看
QSqlTableModel
,sql模块与Qt模型视图框架配合得很好。