一,安装Sqlite3
1.入门时看http://www.runoob.com/sqlite/sqlite-intro.html,说的简单,但是适合入门
2.在终端输入sqlite3,没有返回信息,表示系统没有安装sqlite3,否则系统已安装(系统一般附带有安装)
3.需要自己安装时,到http://www.sqlite.org/sqlite-autoconf-3070500.tar.gz下载,
然后:(1) tar -zxvf sqlite-autoconf-3070500.tar.gz
(2) cd sqlite-autoconf-3070500
(3) ./configure --prefix=/xx/xxxx(/xx/xxxx表示文件生成目录)
(4) make & make install (成功后在/xx/xxxx目录下生成(bin include lib share 4个目录))
其中bin放置可执行文件sqlite3,./sqlite3 可进入sqlite命令行界面
include放置头文件
lib放置库文件
二,用的较多的命令
(1)获取点命令清单:.help
(2)退出提示符:.quit .exit
(3)输出到屏幕:output stdout
(4)列出数据库名称:.databases
(5)以SQL文本格式转存数据库:.dump
三,用的较多的存储类
NULL、INTEGER、REAL、TEXT
四,很有用的语法
(1)创建数据库:sqlite3 xxx.db
(2)创建表
(3)删除表
(4)INSERT INTO语法
(5)SELECT语法
(6)WHERE语法
(7)UPDATE语法
(8)DELETE语法
五,Sqlite3 API 使用
(1)最重要的三个函数:
int sqlite3_open(const char*, sqlite3**);
int sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void*, char**);
int sqlite3_close(sqlite3*);
还有2个:
const char *sqlite3_errmsg(sqlite3*);
void sqlite3_free(void*);
(2)sqlite3_open 返回一个整数错误代码,=0 表示成功码,> 0都是错误码,详情看Sqlite3手册说明
函数用于打开/创建一个函数库
const char* 指定文件名,sqlite3** 指定数据库句柄,用户通过数据库句柄操作数据库
(2)sqlite3_exec返回0表示sql指令执行完毕,否则说明这次执行没有成功
函数用于执行一条或多条SQL语句,SQL语句之间用“;”隔开
sqlite3*指定已打开的数据库句柄,const char *sql 指定SQL指令,sqlite_callback 在回调函数中可以获得SQL执行的结果
void* 指定传给回调函数的数据 , char** 指定命令执行失败的详细错误信息
(3)回调函数
(4) sqlite3_close 关闭数据库文件,参数是数据库句柄
(5)sqlite3_errmsg 返回错误码所对应的文字说明,参数是数据库句柄
(6)sqlite3_free 释放存放错误信息的内存空间,sqlite3_errmsg 返回的errmsg必须用此函数释放
(7)简单测试代码
1 #include <stdio.h> 2 #include <sqlite3.h> 3 4 int callback(void *pv,int argc,char **argv,char **col) 5 { 6 int cnt_i = 0; 7 for(cnt_i =0;cnt_i < argc;cnt_i++) 8 { 9 printf("%s\t%s\n",col[cnt_i],argv[cnt_i]); 10 } 11 printf("\n"); 12 return 0; 13 } 14 15 int main(void) 16 { 17 sqlite3 *db; 18 int result = 0; 19 char *rerrmsg = NULL; 20 char *sql = NULL; 21 char *data = "callback"; 22 23 result = sqlite3_open("sample.db",&db); 24 if(result > 0) 25 { 26 printf("open database err:%s\n",sqlite3_errmsg(db)); 27 return -1; 28 } 29 30 else 31 { 32 printf("open database successfully!\n"); 33 34 sql = "CREATE TABLE STUDENT(" 35 "NUM INT PRIMARY KEY NOT NULL," 36 "NAME TEXT NOT NULL," 37 "AGE INT NOT NULL," 38 "SORCE REAL);"; 39 40 result = sqlite3_exec(db,sql,callback,NULL,&rerrmsg); 41 if(result != 0) 42 { 43 printf("creat table err:%s\n",rerrmsg); 44 sqlite3_free(rerrmsg); 45 return -2; 46 } 47 48 else 49 { 50 printf("create table successfully!\n"); 51 52 sql = "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)" 53 "VALUES(1,‘Paul‘,13,99.1);" 54 "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)" 55 "VALUES(2,‘Kate‘,15,94.1);" 56 "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)" 57 "VALUES(3,‘Jim‘,12,95.1);" 58 "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)" 59 "VALUES(4,‘Tom‘,13,99.4);" 60 "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)" 61 "VALUES(5,‘Jack‘,13,89.1);"; 62 63 result = sqlite3_exec(db,sql,callback,NULL,&rerrmsg); 64 if(result != 0) 65 { 66 printf("insert data err:%s\n",rerrmsg); 67 sqlite3_free(rerrmsg); 68 return -3; 69 } 70 71 else 72 { 73 printf("insert data successfully!\n"); 74 75 sql = "SELECT * FROM STUDENT"; 76 result = sqlite3_exec(db,sql,callback,(void *)data,&rerrmsg); 77 if(result != 0) 78 { 79 printf("select data err:%s\n",rerrmsg); 80 sqlite3_free(rerrmsg); 81 return -4; 82 } 83 84 else 85 { 86 printf("select data successfully!\n"); 87 } 88 } 89 } 90 } 91 92 sqlite3_close(db); 93 94 return 0; 95 }
六,图形界面管理工具
以上,
2017/03/30
原文:http://www.cnblogs.com/IamLoser/p/6648396.html