2024年5月28日发(作者:)

SQLite在WINCE上的使用

--------------SQLite在VC++的应用

 SQLite的简介

SQLite是一个轻量级、跨平台的关系型数据库。既然号称关系型数据库,支持SQL92

标准中常用比如视图、事务、触发器等。

◇轻量级:SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不

存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以享受

它的全部功能。而且那个动态库的尺寸也挺小,以版本3.6.11为例,Windows下487KB、

Linux下347KB。

◇绿色软件:SQLite的另外一个特点是绿色:它的核心引擎本身不依赖第三方的软件,

使用它也不需要“安装”。所以在部署的时候能够省去不少麻烦。

◇单一文件:所谓的“单一文件”,就是数据库中所有的信息(比如表、视图、触发器、

等)都包含在一个文件内。这个文件可以copy到其它目录或其它机器上,也照用不误。

◇跨平台/可移植性:除了主流操作系统,SQLite还支持了很多冷门的操作系统。它对

很多嵌入式系统(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)的支持。

官方网站: /

SQLite在VC中的应用

1. 生成DLL和LIB文件

---新建VS项目,应用程序类型选择:Dll, 同时钩上“Empty project”;

--- 将sqlite3.5.1中所有源代码均加入工程:

(/project/?group_id=88393 也可以下载)。

注意:需要将tclsqlite.c和shell.c去掉。其中tclsqlite.c用于生成基于tcl的api,如

果要编译,这需要另外下 载tcl.h;shell.c用于生成命令行模式的,如果是静态库

形式则可以选择

---在VS编辑界面中选中项目(而不是文件),项目->属性->C/C++->预编译头-> 创

建/使用预编译头: 选择不使用预编译头。

---选中项目(而不是文件),项目->属性->链接器->输入-> 模块定义文件: 输入

“”。

---编译即可生成DLL和LIB文件。(编译方法:VS编辑界面中的“生成”)

(编译成功后,在你的项目文件下的ZY2410_SDK (ARMV4I)/debug中可以找到生成的DLL和LIB

文件。)

2. 下载CppSQLite3U,它是对Sqlite原有纯C的api进行OO的C++的封装。主要封

装以下几个类:

• CppSQLite3DB 数据库类,用于新建数据库,打开关闭链接,执行DDL和DML。

CppSQLite3Statement 用于执行参数化的SQL。CppSQLite3DB 可以执行SQL但是

不支持参数化。

CppSQLite3Query 用于读出执行Select后的查询结果。

CppSQLite3Exception 用于捕捉异常。

3. 实现对数据库的基本操作

• 创建VC++2005|智能设备|MFC智能设备应用程序, 把编译SQLITE生成的

DLL、LIB和sqlite3.h 放到项目的文件夹下,并添加到工程中,并把项目=》

属性=》链接器=》输入=》附加依赖项:输入SQLITE的lib文件名。

将CppSQLite3U的cpp和h文件也放在工程目录下并添加到工程中。

创建如下界面:

注:在创建第四个框时,右击在出现的添加变量中将变量名改为m_list.

• 代码实现如下:

(2)创建表及插入记录:

void Cvcsqlite2Dlg::OnBnClickedBtnTable()

(注意要在***中引用文件:

#include ""

#include "stdafx.h"

#include "vcsqlite2.h"

#include "vcsqlite2Dlg.h"

#include "CppSQLite3U.h ")

(1)创建数据库:

void Cvcsqlite2Dlg::OnBnClickedBtnCredb()

{

CppSQLite3DB db;

(L"My "); //打开或新建数据库

MessageBox(_T("SUCCESS"),_T("INFORMATION"),MB_OK);

();

}

{

CppSQLite3DB db;

(L"My ");

//新建表

CppSQLite3Query q = ery(L"create table student(sno int, sname

nvarchar(6), sage int)");

//插入数据

q=ery(L"insert into student values (1, 'hello', 20)");

MessageBox(_T("SUCCESS"),_T("INFORMATION"),MB_OK);

();

}

(3)查询记录:

void Cvcsqlite2Dlg::OnBnClickedBtnSelect()

{ CppSQLite3DB db;

(L"My ");

CppSQLite3Query q = ery(L"select * from student"); //查询

CString strTemp;

while (!())

{(_T("%s-%s-%s"),alue(0),alue(1),alue(2));

m_ing(strTemp);

w();

}

ze();

();

}

4、编译中如果出现关于_tstoi的错误,将其改为_wtoi。编译通过之后,启动调试.

注意:要把生成的dll放在实验箱与工程同一目录下(即program files里面--编译生成

的.exe文件的默认路径),否则可能会出现如下错误哦:

5、连接实验箱调试即可(网线连接或是USB连接都可)。