码迷,mamicode.com
首页 > 数据库 > 详细

Sqlite3入门简记

时间:2017-03-30 21:52:09      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:primary   bsp   错误代码   database   into   rms   i++   命令行界面   自己   

一,安装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 }
View Code

 

 

六,图形界面管理工具

     SQLite Expert - Personal Edition ,简单入门,直接导入数据库文件即可

 

 

以上,

2017/03/30

Sqlite3入门简记

标签:primary   bsp   错误代码   database   into   rms   i++   命令行界面   自己   

原文地址:http://www.cnblogs.com/IamLoser/p/6648396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!