文件----------存储数据(缺点)
无格式的存取
数据库文件:特殊的文件
数据库:有结构的,集成的,可共享的统一管理的数据结构
★关系型数据库模型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);