加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将sqlite3编译成给WINCE使用的DLL,并封装成C++的步骤(使用VS200

发布时间:2020-12-13 00:22:34 所属栏目:百科 来源:网络整理
导读:利用 VS2005 编译 SQLite3.5.1 1,到 http://sourceforge.net/projects/sqlite-wince/files/下载sqlite-wince-3.x下面的sqlite-wince-3.3.5 2. 创建一个Win32 Smart Device Project,项目名字为sqlite3,Application Type选择DLL,创建项目完成后,将所有sqli

再次,Project->Properties->C/C++->Precompiled Header->Create/Use Precompiled Header: Not using precompiled Header

再次,Project->Properties->Linker->Input->Module Definition File:输入“sqlite3.def”

再次,有可能会出现unresolved external symbol @__security_check_cookie@4这个链接错误,做如下操作即可:Project->Properties->C/C++->Code Generation, Buffer Security Check选择No

上述过程完成后即可得到一个sqlite3.lib和sqlite3.dll

4. 如果想使用c++封装,可以到下面下载:http://softvoile.com/development/CppSQLite3U/

下面的代码是测试(代码是转载的)

4> 有了 SQLite DLL 及 CppSQLite3U 后,便可以很方便地使用 SQLITE :(步骤3中,a链接页画下就有DEMO)

主要代码如下:

#defineFILE_DB_NAMETEXT("unitech.db")

//获取程序当前路径
voidGetCurrentDirectory(CString&szPath)
{
wchar_tpBuf[
256];
GetModuleFileName(NULL,pBuf,
sizeof(pBuf)/sizeof(wchar_t));
szPath
=pBuf;
szPath
=szPath.Left(szPath.ReverseFind('//')+1);
}

voidCDemo2Dlg::OnButton1()
{
CStringstrDbPath;
GetCurrentDirectory(strDbPath);
strDbPath
+=FILE_DB_NAME;

CppSQLite3DBdb;
try
{
//打开或新建一个数据库
db.open(strDbPath);

//判断表名是否存在
if(db.tableExists(L"tblTest"))
{
AfxMessageBox(L
"Table:tblTestisexisted!");
}
else//不存在
{
AfxMessageBox(L
"Table:tblTestnotexisted!");
//新建表
db.execDML(L"createtabletblTest(empnovarchar(20),empnamevarchar(20))");
}

//插入一笔记录
db.execDML(L"insertintotblTestvalues('编号','姓名')");
//插入一笔记录
db.execDML(L"insertintotblTestvalues('精瑞电脑','Answer')");

//删除一笔记录
db.execDML(L"deletefromtblTestwhereempno='编号'");

//插入10笔记录(使用事务)
TCHARbuf[256];
db.execDML(L
"begintransaction;");
for(inti=0;i<10;i++)
{
memset(buf,
0,sizeof(buf));
wsprintf(buf,L
"insertintotblTestvalues('no%d','name%d');",i,i);
db.execDML(buf);
}
db.execDML(L
"committransaction;");

//更新一笔记录
db.execDML(L"updatetblTestsetempname='answer'whereempno='no1'");

//获取总笔数
intcount=db.execScalar(L"selectcount(*)fromtblTest;");
TCHARszCount[
50];
memset(szCount,
sizeof(szCount));
wsprintf(szCount,L
"Count:%d",count);
AfxMessageBox(szCount);

//获取每一笔
CppSQLite3Queryq=db.execQuery(L"select*fromtblTest");
while(!q.eof())
{
AfxMessageBox(q.fieldValue(
0));
q.nextRow();
}
q.finalize();

db.close();
AfxMessageBox(L
"OK");
}
catch(CppSQLite3Exceptionex){AfxMessageBox(ex.errorMessage());}}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

利用VS2005编译SQLite3.5.1

1,到http://sourceforge.net/projects/sqlite-wince/files/下载sqlite-wince-3.x下面的sqlite-wince-3.3.5

2. 创建一个Win32 Smart Device Project,项目名字为sqlite3,Application Type选择DLL,创建项目完成后,将所有sqlite-wince-3.3.5下面的文件拷贝到项目的目录(除了tclsqlite.cshell.c这两个文件)

3. 设置project的一些属性,


首先将sqlite3.cpp改名为sqlite.c,并注释掉整个文件里面的代码,包括include的头文件,因为我们待会儿会按照C语言来编译,而不是C++,如果按照C++编译,会有很多语法错误,当然,你也可以逐条修改语法错误,然后编译(这个我没试过,应该没问题);另外,从项目中删掉stdafx.cpp,这个文件没用。

其次,将编译模式改为c模式(TC)。位置:Project->Properties->Configuration Properties->C/C++->Advanced->Compile As

    推荐文章
      热点阅读