ubuntu上安装和使用sqlite数据库


本文参考了:http://blog.csdn.net/jianchi88/article/details/7037524
安装和使用数据库系统Sqlite3
安装数据库系统Sqlite3:
apt-get install sqlite sqlite3
检查数据库安装结果:
sqlite3 test.db
.database
.exit
提供下面的命令我们应该可以看到文件test.db。
ls
安装Sqlite3编译需要的工具包:
apt-get install libsqlite3-dev

在shell下命令

建一个数据库

sqlite3 stu.db

进入了sqlite3之后,会看到以下文字:

SQLite version 3.1.3
Enter ".help" for instructions
sqlite> 

建立一个表,名为stu,有name和num两个字段,以;分号结束

CREATE TABLE student(name,num);

列出所有的数据表: .tables

.tables

student
显示数据库结构:.schema

.schema student

CREATE TABLE student(name,num);

插入几个数据   insert into table_name values(data1, data2, data3, ...);

insert into stu values('Stevenbai'1,001);
insert into stu values(anjincang,1002);

查询  基本语法 select columns from table_name where expression;

导出所有数据库的内容

select * from film;

Stevenbai|1001
anjincang|1002

 

 SQLite编程与应用

打开数据库
int sqlite3_open(const char *filename, sqlite3 **ppDb);
第一个参数指文件名
第二个参数则是定义的 sqlite3 ** 结构体指针(关键数据结构),称为数据库句柄。
返回值:表示操所是否正确 (SQLITE_OK 操作正常)
说明:打开一个数据库,文件名不一定要存在,如果此文件不存在,sqlite会自动创建。

关闭数据库
int sqlite3_close(sqlite3*);
参数就是刚才的结构体,也就是数据库句柄。
说明:如果用sqlite3_open开启了一个数据库,结尾时不要忘了用这个函数关闭数据库。

 

执行SQL语句
int sqlite3_exec(sqlite3*,const char *sql,sqlite_callback,void *,char **errmsg);
这个函数的功能是执行一条或者多条SQL语句,SQL语句之间用“;”号隔开。
建议在执行一条或者多条SQL语句得时候,指定第三个参数回调函数,在回调函数中可以获得执行Sql得详细过程,如果所有Sql执行完毕则应该返回0,否则,则说明这次执行并没有完全成功。第五个参数:如果执行失败(没有返回0)则可以查看第五个阐述得值。来查看详细错误信息。。
说明:通常sqlite3_callback和它后面的void*这两个位置都可以填NULL,表示不需要回调。比如您做insert操作,做delete操作,就没有必要使用回调。而当作select时,就要使用回调,因为sqlite3把数据查出来,得通过回调告诉你查出了什么数据。

exec的回调
typedef int (*sqlite3_callback)(void*, int, char**, char**);
例如:int LoadMyInfo( void * para, int n_column, char ** column_value, char ** column_name )
para是在 sqlite3_exec 里传入的 void * 参数,通过para参数,可以传入带有控制功能的数据
n_column是这一条记录有多少个字段 (即这条记录有多少列)
char ** column_value 是个关键值,查出来的数据都保存在这里,它实际上是个1维数组,每一个元素都是一个 char * 值,是一个字段内容(用字符串来表示,以\0结尾)
char ** column_name跟column_value是对应的,表示这个字段的字段名称
说明:回调函数必须定义为上面这个函数的类型。

 取当前插入位置:
long long int sqlite3_last_insert_rowid(sqlite3*);
返回你前一次插入得位置,从1开始,sqlite3* 为你打开数据库所得到得句柄。

非回调select查询:
int sqlite3_get_table(sqlite3*,const char *sql,char ***resultp,int *nrow,int *ncolumn,char **errmsg);
执行一次查询Sql 并且返回得到一个记录集。
说明:第三个参数是查询结果,它是一维数组,内存布局为:第一行是字段名称,后面是紧接着是每个字段的值。

 

释放查询结果:
void sqlite3_free_table(char **result);
释放当前查询的记录集所占用的内存。

下面是一个简单应用实例:

  1. #include<stdio.h>    
  2. #include"sqlite3.h"  
  3. #include<string.h>    
  4.   
  5. int printSqlResult(void *para, int column, char **value, char **key)    
  6. {    
  7.     int i;    
  8.     printf("column=%d\n",column);    
  9.     for(i = 0; i < column; i++)    
  10.     {    
  11.         printf("%s\t",*(value+i));    
  12.     }    
  13.     printf("\n");    
  14.     return SQLITE_OK;    
  15. }    
  16. int main(int argc, char *argv[])    
  17. {    
  18.     sqlite3 *pDb;    
  19.     int j, i, pos, row, col, ret;    
  20.     char acCmd[128];    
  21.     char **ppRet;    
  22.   
  23.     if(argc < 2)    
  24.     {    
  25.         printf("please input sql command!");    
  26.         return -1;    
  27.     }    
  28.         
  29.     strcpy(acCmd,argv[1]);    
  30.   
  31.     ret = sqlite3_open("./stu.db",&pDb);    
  32.     if(ret != SQLITE_OK)    
  33.     {    
  34.         printf("open database fail!\n");    
  35.         return -1;    
  36.     }    
  37.   
  38.     ret = sqlite3_exec(pDb, acCmd, printSqlResult, NULL, NULL);    
  39.     {    
  40.         if(ret != SQLITE_OK)    
  41.         {    
  42.         printf("exec fail,ret %d\n", ret);    
  43.         return -1;    
  44.         }    
  45.     }    
  46.     pos = sqlite3_last_insert_rowid(pDb);    
  47.     printf("pos = %d\n",pos);    
  48.   
  49.     sqlite3_get_table(pDb,"select * from stu;",&ppRet,&row,&col,NULL);    
  50.   
  51.     for(i = 0; i <= row; i++)    
  52.     {    
  53.         for(j = 0; j < col; j++)    
  54.         {    
  55.         printf("%s\t",*(ppRet+i*col+j));    
  56.         }    
  57.         printf("\n");    
  58.     }    
  59.     sqlite3_free_table(ppRet);    
  60.     sqlite3_close(pDb);    
  61.     return 0;    
  62. }    

Makefile文件:
  1. OBJS = sqlite.o  
  2. TARGET = sqlite  
  3. CFLAG =    -g -Wall -O2 -lsqlite3  
  4.   
  5. all: $(TARGET)  
  6.   
  7. $(TARGET): $(OBJS)  
  8.     $(CC) $(CFLAG) -o $(TARGET) $(OBJS)  
  9.   
  10. %.o:%.c  
  11.     $(CC) $(CFLAG) -o $@ -c    $?  
  12.   
  13. clean:  
  14.     rm -rf $(OBJS) $(TARGET)  

运行结果:




安装

1、首先建一个文件夹,这里我命名为 sqlite,如下,它的路径为 /home/song/sqlite

2、进入 sqlite 文件夹,执行命令:sudo apt-get install sqlite sqlite3 ,我看着网上都需要安装 sqlite sqlite3,我就纳闷,后者不是前者的升级吗,怎么还需要安装 sqlite,还是不实验了,先安装上用用再说。

这时候已经安装上了,其实安装也没什么的。

3、执行命令:sqlite -version ,查看 sqlite 的版本

同时,我也执行了:sqlite3 -version ,这不是也有一个版本吗,很明显安装的是两个版本,我在想是不是需要支持一些旧格式的文件,所以把就格式也安装上了呢?

使用

创建数据库

4、在该文件夹下,执行命令:sqlite3 test.db ,创建一个名为test.db 的数据库,如下图

5、你可以输入 .help 命令,查看帮助信息。

创建数据表(注意,是数据表,不是数据库了。至少要在数据库中建立一个表或者试图,这样才能将数据库保存在磁盘中,否则数据库不会被创建)

6、现在输入:create table mytable(id,name,age); (注意这里要加分号)我在这里创建了一个名字叫mytabel的数据表,该数据表内定义了三个字段,分别为 id、name、age。

向数据表插入数据

7、执行命令:insert into mytable(id,name,age) values(1,"张三","21");

insert into mytable(id,name,age) values(2,"李四","23");

查询数据表

8、执行命令:select * from mytable;

设置格式

9、执行命令:.mode column (注意没有分号),设置为列显示模式

10、执行命令:

退出数据库

11、执行命令:

再次进入数据库

12、执行命令:sqlite3 test.db 打开咱们刚才创建的数据库

查看数据库信息

13、执行命令:.databases 查看数据库信息

查看该数据库内的表信息

14、执行命令:.tables 可以看到该数据库内有一个表文件

15、执行命令:sudo apt-get install sqlitebrowser 安装可视化工具

16、执行命令:sqlitebrowser test.db ,可以看到咱们的数据库了

Sqlite 貌似还有很多命令,我先将它贴出来 见 http://www.linuxidc.com/Linux/2013-08/89155p2.htm








  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值