安装sqlite3数据库管理系统:
sudo apt-get install sqlite3
sudo apt-get install libsqlite3-dev
安装可视化:
sudo apt-get install sqlitebrowser
sqlitebrowser test.db
编译:
gcc test.c -lsqlite3
db释意:
data base 数据库的意思
type:字段类型
integer ->int
text/char ->字符串类型
rear ->浮点型
sqlite3 test.db
//小问题:如果有两组一样的数据,想要删除其中一组,该怎么删?
select * from
eg:数据表最好拿第一列存放序号
sqlite> alter table books add column id int;
sqlite> update books set id=1 where bookname="golden styles";
sqlite> update books set id=2 where bookname="living";
sqlite> update books set id=3 where bookname="blade point";
sqlite> update books set id=4 where bookname="the seventh day";
sqlite> select * from books;
golden styles|wanger|1995|1
living|yuhua|1989|2
blade point|Maugham|2000|3
the seventh day|yuhua|2009|4
sqlite> select * from books where id=3;
blade point|Maugham|2000|3
sqlite> insert into books (bookname,auther)values("100 years of solitude","marquez");
sqlite> insert into books (bookname,auther)values("100 years of solitude","marquez");
sqlite> select * from books where auther="marquez";
100 years of solitude|marquez||
100 years of solitude|marquez||
sqlite> delete from books where bookname="100 years of solitude";
sqlite> select * from books;
golden styles|wanger|1995|1
living|yuhua|1989|2
blade point|Maugham|2000|3
the seventh day|yuhua|2009|4
#include
功能:
打开数据库文件,不存在则创建
参数:
path:数据库文件路径+文件名
db :保存打开的数据文件的地址
返回值:
成功:返回0
失败:非0
#include
int main(){
sqlite3 *db = NULL;
if(sqlite3_open("test.db",&db) != 0){
printf("%s\n",sqlite3_errmsg(db));
}
return 0;
}
返回值:
成功返回0,失败返回错误码
返回值:
返回错误信息 (%s)
功能:执行SQL操作
db:数据库文件地址
sql:SQL语句
callback:回调函数
arg:传递给回调函数的参数
errmsg:错误信息指针的地址
返回值:成功返回0,失败返回错误码
注意!!!!!:当需要sqlite3_exec去执行select操作时需要封装callback区处理查询到记录。
#include
#include
int main(){
//sqlite3_open
sqlite3 * db = NULL;
if (sqlite3_open("test.db",&db)){
printf("错误提示--%s\n",sqlite3_errmsg(db));
return -1;
}
//sqlite3_exec -- create table
if (sqlite3_exec(db,"create table books(id char,bookname char);",NULL,NULL,NULL) != 0){
perror("sqlite3_exec -- create table");
return -1;
}
//name passwd
printf("请输入序号 书名\n");
char id[32] = {0};
char bookname[32] = {0};
char sql[256] = {0};
scanf ("%d%s",id,bookname);
sprintf(sql,"insert into books values('%d','%s');",id,bookname);
//sqlite3_exec -- insert
if (sqlite3_exec(db,sql,NULL,NULL,NULL) != 0){
perror("sqlite3_exec -- insert");
return -1;
}
return 0;
}
如何理解函数原型?:typedef int (*sqlite3_callback)(void *arg, int,char **, char **);
如何理解callback中的num?
如何理解参数para?
还需加强函数的相关练习(看懂函数原型、形参实参的调用、函数指针等)
//sqlite3_exec函数在执行查询操作时,需要封装回调函数callback处理查询到的记录
#include
#include
int callback(void *para, int num, char ** f_value, char ** f_name)
{
static int count = 0;
for (int i=0;i
如果有两组一样的数据,想要删除其中一组,该怎么删?
百度
如何理解callback函数?(参数太多,而且不知道具体怎么实现查找功能的,比如num不是根本每定义吗)
第一个参数需要就传,后面的参数直接使用