SQlite3基本语法及常用方法(API)

一、序


sqlite@R_301_457@只用简单的几个文件就可以实现@R_301_457@操作,避免了其他繁琐的设置,小巧方便,所以是一个非常不错的嵌入式@R_301_457@。同时sqlite@R_301_457@在简单的C++/MFC程序中应用起来也比较方便。


本文介绍了sqlite3@R_301_457@的基本命令,包括@R_301_457@的创建、表的创建、字段的定义及其属性设置、记录的插入、记录的修改、记录的删除以及记录的查询等,基本覆盖了@R_301_457@常用的一些操作。然后,介绍sqlite3的常用函数借口API,用于执行@R_301_457@命令。

sqlite3库及头文件可以在本人的资源中下载,地址:http://download.csdn.net/detail/qingyang8513/9445022(直接给出需要的结果文件,无需自己生成,测试通过)


sqlite3@R_301_457@在VS2010环境下的编程示例可以参考本人微博【MFC-9】VS2010/MFC基于对话框的sqlite3@R_301_457@编程(http://www.jb51.cc/article/p-wwmijxge-yz.html


下面依次介绍sqlite3的基本语法和常用命令。


二、sqlite3的基本语法


1、创建@R_301_457@:参考如下

int rc = sqlite3_open("Database\\GoodsInformation.db",&m_sql_database);// 打开@R_301_457@,不存在时创建
if (rc)   
{
	sqlite3_close(m_sql_database);  //打开失败! 
	MessageBox(_T("@R_301_457@打开失败,请检查后再操作!"),NULL,MB_ICONSTOP);
	return FALSE;
}


2、新建表及字段设置:create table table_name(field1 type1,field2 type1,...);(大小写均可)
sql = "CREATE TABLE IF NOT EXISTS goods_table_one(Goods_Id varchar(20) PRIMARY KEY NOT NULL,Goods_Name varchar(20) NOT NULL,Goods_Brand varchar(10),Goods_Color varchar(10),Goods_Price varchar(20) NOT NULL,Goods_Price_In varchar(20) NOT NULL,Goods_Num varchar(20) NOT NULL,Goods_Unit varchar(10) NOT NULL,System_Note varchar(20))";// 创建一个表格


字段类型及常用属性

1)NOT NULL / NULL:非空,约束列不能为空,否则报错;

2)PRIMAR KEY:主键,a)主键的值必须唯一,用于标识每一条记录,如学生的学号;b)主键同时也是一个索引,通过主键查找记录速度较快;c)主键如果是整数类型,该列的值可以自动增长;

3)UNIQUE:唯一,除主键外,约束其他列的数据的值唯一;

4)varchar / TEXT:字符串;

5)INTERGER / int:整型;

6)REAL:浮点型;

7)BLOB:二进制数/布尔型;

8)CHECK:条件检查,约束该列的值必须符合条件才可存入;

9)DEFAULT:默认值,列数据中的值基本都是一样的,这样的字段列可设为默认值。


3、插入新记录:insert into table_name(field1,field2,...) values(val1,val2,...);
sql = sqlite3_mprintf("INSERT INTO goods_table_one  (Goods_Id,Goods_Name,Goods_Brand,Goods_Color,Goods_Price,Goods_Price_In,Goods_Num,Goods_Unit,System_Note) VALUES  ('%s','%s','%s')",inputGoodTemp->goods.CString@R_301_294@ar(inputGoodTemp->goods.ID),inputGoodTemp->goods.CString@R_301_294@ar(inputGoodTemp->goods.Name),inputGoodTemp->goods.CString@R_301_294@ar(inputGoodTemp->goods.Brand),inputGoodTemp->goods.CString@R_301_294@ar(inputGoodTemp->goods.Color),inputGoodTemp->goods.CString@R_301_294@ar(inputGoodTemp->goods.Price),inputGoodTemp->goods.CString@R_301_294@ar(inputGoodTemp->goods.Price_In),inputGoodTemp->goods.CString@R_301_294@ar(inputGoodTemp->goods.GoodsNum),inputGoodTemp->goods.CString@R_301_294@ar(inputGoodTemp->goods.Unit),inputGoodTemp->goods.CString@R_301_294@ar(inputGoodTemp->goods.System_Note));

4、修改记录:update table_name set field1=val1,field2=val2 where expression;


5、删除记录:delete from table_name [where expression];

sql = sqlite3_mprintf("DELETE FROM goods_table_one WHERE Goods_Id='%s'",inputGoodTemp->goods.CString@R_301_294@ar(inputGoodTemp->goods.ID));


6、查询记录:select columns from table_name [where expression];

sql = sqlite3_mprintf("select %s from %s WHERE Name = '%s'","Password","user_database",szTemp);


查询的其他操作:
1)查询输出所有数据记录
select * from table_name;
2)限制输出数据记录数量
select * from table_name limit val;
3)升序输出数据记录
select * from table_name order by field asc;
4)降序输出数据记录
select * from table_name order by field desc;
5)条件查询
select * from table_name where expression;
select * from table_name where field in ('val1','val2','val3');
select * from table_name where field between val1 and val2;
6)查询记录数目
select count (*) from table_name;
7)区分列数据
select distinct field from table_name;
有一些字段的值可能会重复出现,distinct去掉重复项,将列中各字段值单个列出。

7、建立索引:create index index_name on table_name(field);

当说数据表存在大量记录,索引有助于加快查找数据表速度。


8、删除索引:

1)drop table table_name;
2)drop index index_name;


三、sqlite3常用方法(API)


1)sqlite3 *db,@R_301_457@句柄,跟文件句柄FILE很类似;

2)sqlite3_stmt *stmt,这个相当于ODBC的Command对象,用于保存编译好的sql语句;

3)sqlite3_open(),打开@R_301_457@,没有@R_301_457@时创建;

4)sqlite3_exec(),执行非查询sql语句;

5)sqlite3_step(),在调用sqlite3_prepare后,使用这个函数在记录集中移动;

6)sqlite3_close(),关闭@R_301_457@文件

还有一系列的函数,用于从记录集字段中获取数据,如

7)sqlite3_column_text(),取text类型的数据;

8)sqlite3_column_blob(),取blob类型的数据;

9)sqlite3_column_int(),取int类型的数据;


示例:

1、创建@R_301_457@句柄:

sqlite3* m_sql_database;


2、打开与关闭@R_301_457@:

int rc = sqlite3_open("Database\\password.db",MB_ICONSTOP);
	return;
}

3、执行sql语句:
char *sql = "CREATE TABLE IF NOT EXISTS user_database(Id int PRIMARY KEY NOT NULL,Name varchar(20) NOT NULL UNIQUE,Password varchar(20) NOT NULL)";// 创建一个表格
if (sqlite3_exec(m_sql_database,sql,&err_msg) != sqlITE_OK) 
{ 
	MessageBox(_T("操作失败,@R_301_457@链表生成错误!"),MB_ICONSTOP);
	return; 
}
//搜索@R_301_457@中的用户名和密码,然后进行校验
sql = sqlite3_mprintf("select %s from %s WHERE Name = '%s'",szTemp);
sqlite3_exec(m_sql_database,&sqlite_Callback_Query_Password,&m_QueryPassword,&err_msg);

其中,

1)sqlite_Callback_Query_Password为自定义回调函数,定义如下:

int sqlite_Callback_Query_Password(void * userData,int numCol,char ** colData,char ** colName)

2)char *err_msg:用于保存错误信息的指针



具体使用方法可以直接搜索响应的函数,即可得到详细的解释,这里不再介绍。

相关文章

安装 在Windows上安装SQLite。 访问官网下载下Precompliled Binaries for Windows的两个压缩包。 创建s...
一、安装 下载地址:http://www.sqlite.org/download.html 将Precompiled Binaries for Windows下的包下...
实例: 会员信息管理 功能:1.查看数据库 2.清空数据库 3.增加会员 4.删除会员 5.更新会员 6.查找会员  ...
关于SQLite SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的在读写效率、消耗总量、延迟时间和整...