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

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

发布时间:2020-12-12 19:33:36 所属栏目:百科 来源:网络整理
导读:一、序 SQlite数据库只用简单的几个文件就可以实现数据库操作,避免了其他繁琐的设置,小巧方便,所以是一个非常不错的嵌入式数据库。同时SQlite数据库在简单的C++/MFC程序中应用起来也比较方便。 本文介绍了SQlite3数据库的基本命令,包括数据库的创建、表

一、序


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


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

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


SQlite3数据库在VS2010环境下的编程示例可以参考本人微博【MFC-9】VS2010/MFC基于对话框的SQlite3数据库编程(http://www.52php.cn/article/p-wwmijxge-yz.html)


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


二、SQlite3的基本语法


1、创建数据库:参考如下

int rc = sqlite3_open("DatabaseGoodsInformation.db",&m_sql_database);// 打开数据库,不存在时创建
if (rc)   
{
	sqlite3_close(m_sql_database);  //打开失败! 
	MessageBox(_T("数据库打开失败,请检查后再操作!"),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.CStringToChar(inputGoodTemp->goods.ID),inputGoodTemp->goods.CStringToChar(inputGoodTemp->goods.Name),inputGoodTemp->goods.CStringToChar(inputGoodTemp->goods.Brand),inputGoodTemp->goods.CStringToChar(inputGoodTemp->goods.Color),inputGoodTemp->goods.CStringToChar(inputGoodTemp->goods.Price),inputGoodTemp->goods.CStringToChar(inputGoodTemp->goods.Price_In),inputGoodTemp->goods.CStringToChar(inputGoodTemp->goods.GoodsNum),inputGoodTemp->goods.CStringToChar(inputGoodTemp->goods.Unit),inputGoodTemp->goods.CStringToChar(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.CStringToChar(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,数据库句柄,跟文件句柄FILE很类似;

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

3)sqlite3_open(),打开数据库,没有数据库时创建;

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

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

6)Sqlite3_close(),关闭数据库文件;

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

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

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

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


示例:

1、创建数据库句柄:

sqlite3* m_sql_database;


2、打开与关闭数据库:

int rc = sqlite3_open("Databasepassword.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("操作失败,数据库链表生成错误!"),MB_ICONSTOP);
	return; 
}
//搜索数据库中的用户名和密码,然后进行校验
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:用于保存错误信息的指针



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

(编辑:李大同)

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

    推荐文章
      热点阅读