Sqlite使用手册
1. 概述 SQLite是一个开源的嵌入式关系数据库,SQLite可移植性好,很容易使用,很小,高效而且可靠,占用资源少。 2. 术语 Sql语句: 用来操作已打开的数据库的操作语句 3. 常用API使用说明 3.1 所需头文件 #include <sqlite3.h> 3.2 常见API 3.2.1 打开数据库 原型:int sqlite3_open(const char *filename,sqlite3 **ppDb) 功能:打开数据库文件 参数:filename 所要打开的文件名 *ppDb 成功打开文件后用来操作数据库的指针 返回值:SQLITE_OK 表示成功打开文件 其他值 表示打开失败 3.2.2关闭数据库 原型:int sqlite3_close(sqlite3 * pDb) 功能:打开数据库文件 参数:ppDb 成功打开文件后用来操作数据库的指针 返回值:SQLITE_OK 表示关闭成功 SQLITE_BUSY 表示关闭失败 3.2.3 执行sql语句 原型:int sqlite3_exec(sqlite3* pDb, Const char *sql,int (*callback)(void*,int,char**,char**), Void* arg, char**errmsg) 功能:执行sql语句 参数: pDb 所要操作数据库的指针 Sql 要执行的sql语句 Callback 执行语句后调用的回调函数指针 arg 传递给回调函数的第一个参数 errmsg 返回的错误信息 返回值:SQLITE_OK 表示关闭成功 SQLITE_BUSY 表示关闭失败 3.2.4编译sql语句的声明 原型:int sqlite3_prepare (sqlite3* pDb,const char *zSql,int nByte,sqlite3_stmt **ppStmt,const char **pzTail) 功能:编译要执行sql语句 参数: pDb 所要操作数据库的指针 zSql 要执行的sql语句 nByte sql语句的长度 ppStmt sql语句编译的结果 pzTail 返回的错误信息 返回值:SQLITE_OK 表示关闭成功 SQLITE_BUSY表示关闭失败 3.2.5表格行的步进 原型:int sqlite3_step(sqlite3_stmt* pStmt ) 功能:使数据库指针指向下一行 参数: pStmt 数据库指针 返回值:SQLITE_ROW 表示该行不为空 其他 表示该行为空 3.2.6获取该行的某列的int型数据 原型:int sqlite3_column_int(sqlite3_stmt* pStmt,int iCol) 功能:获取pStmt所指向的该列的第iCol列int型数据 参数: pStmt 数据库指针 iCol 第几列 3.2.7获取该行的某列的text型数据 原型:int sqlite3_column_text(sqlite3_stmt* pStmt,int iCol) 功能:获取pStmt所指向的该列的第iCol列text型数据 参数: pStmt 数据库指针 iCol 第几列 3.2.8获取该行的某列的blob型数据 原型:int sqlite3_column_blob (sqlite3_stmt* pStmt,int iCol) 功能:获取pStmt所指向的该列的第iCol列blob型数据 参数: pStmt 数据库指针 iCol 第几列 3.2.9获取该行的某列的double型数据 原型:int sqlite3_column_double (sqlite3_stmt* pStmt,int iCol) 功能:获取pStmt所指向的该列的第iCol列double型数据 参数: pStmt 数据库指针 iCol 第几列 3.2.10释放一个已准备的声明的类 原型:int sqlite3_finalize(sqlite3_stmt *pStmt) 功能: 操作完数据库后调用该函数释放使用的空间 参数: pStmt 数据库指针 返回值:SQLITE_OK 表示关闭成功 SQLITE_BUSY表示关闭失败 4. 使用实例 #include <sqlite3.h> #include <stdio.h> #include <string.h> //回调函数 int ListTablesName_callback(void *pDB,int argc,char **argv,char **azColName) { int ret; char pSqlQuerySel[128] = "select * from "; char *pError = NULL; sqlite3_stmt *pStmt = NULL; strcat(pSqlQuerySel,argv[0]); fprintf(stdout,"%sn",pSqlQuerySel); //准备读取数据 ret = sqlite3_prepare((sqlite3 *)pDB,pSqlQuerySel,strlen(pSqlQuerySel),&pStmt,(const char**)&pError); if (ret != SQLITE_OK) { fprintf(stderr,"sqlite3_prepare failn"); return -1; } while (1) { ret = sqlite3_step(pStmt); //移动记录集 if (ret != SQLITE_ROW) break;
fprintf(stdout,"%d ",sqlite3_column_int(pStmt,0)); fprintf(stdout,"%s n",sqlite3_column_text(pStmt,1)); } return 0; } int main() { int ret = 0; sqlite3 *pDB = NULL; sqlite3_stmt *pStmt = NULL; char *pError = NULL; char *pListTablesNameSel = (char*)"SELECT name FROM sqlite_master";//列出所以表名语句 //打开文件 ret = sqlite3_open("test.db",&pDB); if (ret != SQLITE_OK) { fprintf(stderr,"can't open database : %sn",sqlite3_errmsg(pDB)); sqlite3_close(pDB); return -1; } //查找源文件中所有表名 ret = sqlite3_exec(pDB,pListTablesNameSel,ListTablesName_callback,pDB,&pError); if (ret != SQLITE_OK) { fprintf(stderr,"list table count error: %s",sqlite3_errmsg(pDB)); sqlite3_close(pDB); return -1; } return 0; } 编译:g++ example.cpp –lsqlite3 注意:这里需要把sqlite的头文件和库包含在环境变量中 5 终端命令行操作数据库 编译完sqlite源码后可以得到一个可以直接操作数据库文件的可执行文件,名字为sqlite3。 下面简单介绍命令行操作数据库的命令 # ./sqlite3 test.db sqlite> .tables //显示test.db中所有的表 info login sqlite> .schema //显示test.db中所有的表的建表语句 CREATE TABLE info(id int,name text); CREATE TABLE login(id int,name text); sqlite> .schema info //查询某个表的创建语句 CREATE TABLE info(id int,name text); sqlite> .help //显示所以命令 sqlite> select * from info; //查表语句 1|wang 2|liu 1|zhang sqlite>.quit //退出操作 sqlite3兼容sql中大部分常用的sql语句,由于sql语句比较多,这里就不一一例举,如果需要了解更加深入,可以上网查询 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |