1. 首先我在终端中,尝试使用数据库,也就是输入命令,对数据库进行操作,这个过程只是过渡,最后还是要过渡到使用数据库的编程接口来实现对应的功能。
2. 创建并打开一个数据库文件sqlite3 student.db;
3. 然后在这个数据库中创建一张表,名字叫做stu_info,然后这个表中可以存储两个数据,就是学生的学号和学生的姓名,这里把学生的学号作为主键,create table stu_info(stu_num interger primary key,stu_name text);
4. 然后就是插入内容,insert into stu_info(stu_num,stu_name) values(001,’zhang’);这样在这个表中就会有这样一条数据 1| zhang。
5. 如何查看呢?可以使用select * from stu_info;从这张表中查找所有数据,就是显示这张表中的所有数据。
6. 可以查看所有的学生姓名,select stu_name from stu_info;
7. 更新数据库表中的内容update stu_info set stu_num=10086 where stu_name='wang';格式为update + 表名 + set + 想要修改的成员 + where + 关键索引信息;这里的关键索引信息也可以是想要修改的内容。
8. 查看表 .schema
9. 删除一条信息delete from stu_info where stu_num = 10000;格式为 delete from + 表名 + where + 索引的信息;
10. 添加表中的列:alter table stu_info add column dept;在表中添加了一列关键字为dept的数据,未制定这个数据的类型,试了以后发现整数和字符串都可以存储进这个中。
11. 其中搜索select有很多的语法,是sqlite3中最强大最复杂的语法,具体详细的可以网上查阅。
Linux C中的sqlite3函数接口
1. 创建数据库,并返回句柄sqlite3_open("user.db",&db);其中db的类型为sqlite3 *db;
2. sqlite3_exec(db,"createtable my_table(name,password,favourite)",NULL,NULL,errmsg);执行对数据库操作的函数语句,类似于在终端上的使用,语句用字符串形式放入。
3. 关闭数据库sqlite3_close(db);使用的返回的句柄进行关闭。
4. 获取数据库中的信息,可以通过nrow和ncolumn,在Result中返回需要的结果,Result 的类型为char ** Result,我个人认为这是一个动态的指针数组(我并不确定,但是大致是这样的原理),通过nrow和ncolumn一起配合使用,遍历整张表的时候,可以获取一个数据的内容,然后通过这个Result进行返回,表示获得查找结果。sqlite3_get_table(db,"select* from my_table",&Result,&nrow,&ncolumn,&errmsg);
5. sqlite3_free_table(char**result);释放查询结果所占的内存。
6. 这里我发现我之前的项目竟然没有第五点的释放内存空间,我知道那时候时间紧,然后只要求能够实现功能就可以,所以就随便封装了一个函数,然后知识获取了数据库中的内容而没有释放,这个是很差劲的做法,我在以后的项目中需要避免,养成好的函数封装风格和内存申请释放的习惯。
不足之处还望指正。