我开始学习如何使用Sqlite和构建数据库,但是我希望能够在C ++中使用这些数据库。每当我启动时,我都无法完成任何事情,因为Visual Studio会给我标题中的错误。当我尝试:
#include <sqlite3.h>
我尝试将所有代码从sqlite的合并中移到我的项目文件中,但仍然无法正常工作。我尝试使用:
"sqlite3.h"
代替
<sqlite3.h>
我还添加了'amalgamation'文件夹作为目录,该目录可以消除第一个错误,但是在构建时出现链接器错误。
我感觉好像错过了设置中不允许我继续执行的操作,但是我已经搜索了所有可以想象的内容,但没有找到答案。任何帮助将不胜感激。谢谢。
更新:我在CLR项目中,因为我需要将GUI附加到此数据库,并且无法从合并中编译.c文件。这些文件似乎是我的问题的解决方案,因此,有什么办法可以解决C文件无法在CLR项目中编译的问题?
答案 0 :(得分:0)
以下方法演示了如何与sqlite3.dll链接。
下载以下文件夹并将其复制到Visual C ++解决方案文件夹。
https://github.com/mcychan/DNAssist/tree/master/sqlite3
sqlite3文件夹包含x86和x64版本的sqlite dll和lib。
您可以升级到最新版本的sqlite.dll。
下载以下文件并将其复制到Visual C ++项目文件夹,为它们添加引用。
https://github.com/mcychan/DNAssist/blob/master/DNAssist/CppSQLite3.cpp
https://github.com/mcychan/DNAssist/blob/master/DNAssist/CppSQLite3.h
以下是查询数据库的示例代码。
#include "CppSQLite3.h"
#include <iostream>
#include <string>
using namespace std;
CppSQLite3DB db;
bool GetDatabase(const string& dbPath)
{
try {
db.open(dbPath.c_str());
return true;
}
catch (CppSQLite3Exception& e)
{
cout << _T("Cannot open database: ") << dbPath << _T("\n");
return false;
}
}
void IssueQuery(const string& querystring, const string& field1)
{
try {
CppSQLite3Query q = db.execQuery(querystring.c_str());
while (!q.eof()) {
CString temp2(q.fieldValue(field1.c_str()));
TRACE(temp2 + _T("\n"));
q.nextRow();
}
}
catch (CppSQLite3Exception& e)
{
cout << _T("Cannot execute query: ") << querystring << _T("\n");
}
}
void main()
{
if(GetDatabase("C:\\test.sqlite"))
IssueQuery("SELECT * FROM DUAL", "X");
}