SQlite3基本语法及常用方法(API)
一、序
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; }
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:默认值,列数据中的值基本都是一样的,这样的字段列可设为默认值。
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;
三、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:用于保存错误信息的指针
具体使用方法可以直接搜索响应的函数,即可得到详细的解释,这里不再介绍。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |