@H_
301_0@/*
/////////////////////////////////简介/////////////////////////////////
sqlite是一种嵌入式
数据库,它跟微软的Access差不多,只是一个.db格式的
文件。但是与Access不同的是,它不需要安装任何软件,非常轻巧。很多软件都有用到这个家伙,
包括腾讯QQ、迅雷(你在迅雷的安装目录里可以看到有一个
sqlite3.dll的
文件,就是它了),以及现在大名鼎鼎的android等。
sqlite3是它的第三个主要版本。就是
sqlite3.0的意思。 对了,金山词霸也有用到
sqlite,其实太多软件用那玩意儿了。
sqlite是一个开源的嵌入式关系
数据库,在2000年由D.Richard Hipp发布。
sqlite能够减少应用程序管理
数据库的开销,可逢移植性好,高效而且可靠。
sqlite嵌入到应用程序中,与应用程序共用相同的进程空间,而不是单独的一个进程。从外部看,
sqlite并不像一个关系
数据库,但在进程内部,却是完整的、自包含的
数据库引擎。
*/
@H_
301_0@/*
核心对象:
数据库连接对象:
sqlite3
prepared_statement对象:
sqlite3_stmt
严格的讲
sqlite3_stmt对象也不是必须的,另外两个封装了
sqlite3_stmt的接口
sqlite3_exec和
sqlite3_get_table可以代替
sqlite3_stmt对象完成数据存取工作,但是理解
sqlite3_stmt对于充分使用
sqlite有很大帮助以下是一些操作
sqlite3和
sqlite3_stmt对象的接口,下面这些名字只是提供一个概念,实际的
函数可能会有很多版本比如
sqlite3_open()有,
sqlite3_open_v16(),
sqlite3_open_v2()
*/
@H_
301_0@/*
关键
函数:
*/
sqlite3_open() //打开
数据库
sqlite3_prepare() //将
sql语句转换成
sqlite3_stmt对象,
增加版
sqlite3_prepare_v2()
sqlite3_step() //单步执行
sqlite3_stmt
sqlite3_column() //返回
sqlite3_stmt所在行的指定column的值
sqlite3_finalize() //销毁
sqlite3_stmt对象,释放内存
sqlite3_close() //
关闭数据库
/*
只要会用以上六个
函数的使用也就差不多已经进入了
sqlite3的C/C++编程了
*/
@H_
301_0@#include <iostream>
#include <string.h>
#include "
sqlite3.h"
#pragma comment(lib,".\\
sqlite3.lib")
using namespace std;
/*
编译环境:VC6.0
*/
//创建"表"
函数
void Create(int &rc,
sqlite3 *db,char *
sql,
sqlite3_stmt *stmt)
{
//判断是否已经存在表了
rc=
sqlite3_prepare_v2(db,
sql,strlen(
sql),&stmt,0);
if (rc)
{
fprintf(stderr,"对象转换失败:%s\n",
sqlite3_errmsg(db));
return;
}
//执行stmt(执行
sql语句)
sqlite3_step(stmt);
//释放stmt资源
sqlite3_finalize(stmt);
}
void Insert(int &rc,
sqlite3_stmt *stmt,char name[])
{
sprintf(
sql,"INSERT INTO MyTable VALUES(NULL,'%s');",name);
rc=
sqlite3_prepare_v2(db,
sqlite3_errmsg(db));
return;
}
sqlite3_step(stmt);
sqlite3_finalize(stmt);
}
int main()
{
//
sqlite3两个重要对象
sqlite3 *db;
sqlite3_stmt *stmt=0;
//创建表的结构
char
sql[]= "CREATE TABLE IF NOT EXISTS MyTable(ID integer NOT NULL primary "
"key autoincrement,Name nvarchar(32));";
//[1]打开
数据库
int rc=
sqlite3_open("MyDB.db",&db);
if (rc)
{
sqlite3_close(db);
return -1;
}
else
Create(rc,db,stmt);
//向数据里边插入些数据,用来测试
Insert(rc,stmt,"张三");
Insert(rc,"李四");
Insert(rc,"王五");
Insert(rc,"赵六");
sprintf(
sql,"SELECT * FROM MyTable;");
//[2]将
sql语句转换成stmt对象
sqlite3_prepare_v2(db,0);
int id;
unsigned char *name;
//[3]循环执行stmt对象,读取
数据库里边的数据
while(
sqlite3_step(stmt)==
sqlITE_ROW)
{
//[4]绑定变量
id=
sqlite3_column_int(stmt,0);
name=(unsigned char *)
sqlite3_column_text(stmt,1);
cout<<id<<'\t'<<name<<endl;
}
//[5]释放资源
sqlite3_finalize(stmt);
//[6]
关闭数据库
sqlite3_close(db);
return 0;
}
本文源代码下载