学习日志(二十四)
SQLite的编程操作③
C代码创建表并且插入数据
用到笔记(二十三)中的:各种操作数据库中表的C接口函数:
https://editor.csdn.net/md/?articleId=129258471
功能描述
如果表不存在,则创建表,如果存在,不创建表,并插入数据:211,‘sun’,99,
再借用回调函数输出数据信息。
代码
#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
int callback(void *arg, int column_size, char *column_value[], char*column_name[])
{
int i;
printf("arg = %s\n",(char *)arg);
for(i=0;i<column_size;i++){
printf("%s = %s\n",column_name[i],(char *)column_value[i]);
}
printf("========================\n");
return 0 ;// 数据库中有几条数据它回调函数就会调用几次
}
int main(int argc,char **argv)
{
sqlite3 *db = NULL;
int ret = 0;
char *errmsg;
if(argc<2){
printf("Uage: %s xxx.db\n",argv[0]);
exit(-1);
}
if((ret = sqlite3_open(argv[1],&db)) == SQLITE_OK){
printf("ret = %d create %s success\n",ret,argv[1]);
}else{
printf("ret = %d creat %s fail\n",ret,argv[1]);
printf("error num = %d error mesg:%s\n",sqlite3_errcode(db),sqlite3_errmsg(db));
if(ret==14){
printf("permisson deny\n");
}
exit(-1);
}
ret = sqlite3_exec(db,"create table class1(id Integer,name char,score Integer);", \
callback,"into callback",&errmsg);
printf("ret = %d error message %s\n",ret,errmsg);
sqlite3_exec(db,"insert into class1 values(211,'sun',99);", \
callback,"into callback",&errmsg);
sqlite3_exec(db,"select * from class1", \
callback,"into callback",&errmsg);
printf("Done\n");
sqlite3_close(db);
return 0;
}