苏嵌33 17.01.18

来源:互联网 发布:shell编程如何保存 编辑:程序博客网 时间:2024/05/23 21:22

文件----------存储数据(缺点)

无格式的存取


数据库文件:特殊的文件

数据库:有结构的,集成的,可共享的统一管理的数据结构


★关系型数据库模型RDBMS(二维表格)


元组:一行

属性:一列(字段)

主键列:某一列唯一标识一行


嵌入式数据库基本要求:体积适当 可移植性好 编程接口简单 代码开源


每个SQL语句以;结束 不区分大小写


常量:integer 整型 text字符串(char 32/char 16)bool真假 real实型(带小数点)


数据库操作:

1、touch student.db 创建数据库

2、sqlite3 student.db 进入数据库

3、create table student(id integer primary key,name text,age integer); 创建表名

                                                           主键列可自动生长

4、.schema 看当前数据库下有哪些表

5、drop table student2; 删除表

6、alter table student1 rename to student2; 重命名

7、alter table student add column sex text; 增加一列

8、insert into student(id,name,age,sex) values(1,'zhangsan',12,'f'); 增加

9、select * from student; 查找

10、update student set name = 'lisi' where name = 'zhangsan2';  修改

11、delete from student where name = 'zhangsan'; 删除

12、.exit 退出


数据库编写: gcc sqlite3_demo.c -lsqlite3

#include <sqlite3.h>


sqlite3 *db;

int sqlite3_open(argv[1],&db);  打开  成功返回SQLITE_OK


sqlite3_close(db); 关闭


sqlite3_exec(sqlite3 *pDB,const char *sql,NULL,NULL,char **errmsg)

sqlite_callback    callback  回调函数   不是查询则为空

void *para  不是查询语句则为空

char *errmsg;


sqlite3_exec(db,"create table student(id integer primary key,name text,age integer)",NULL,NULL,&errmsg);   创建表名


增加:

char sql[1024];

sprintf(sql,"insert into student(id,name,age) values(%d,'%s',%d)",id,name,age);

sqlite3_exec(db,sql,NULL,NULL,&errmsg);


查找:

int handle_result(void *para,int column_count,char **column_value,char **column_name)

{

printf("para = %s\n",(char *)para);

printf("column count = %d\n",column_count);

int i;

for(i = 0; i < column_count; i++)

{

    printf("%s:%s ",column_name[i],column_value[i]);

}

printf("\n");

return 0;

}


sqlite3_exec(db,"select * from student",handle_result,"hello world",&errmsg);

0 0
原创粉丝点击