设为首页 收藏本站
查看: 945|回复: 0

[经验分享] SQLite源码编译使用

[复制链接]

尚未签到

发表于 2016-11-29 11:06:32 | 显示全部楼层 |阅读模式
   因为项目需要用到数据库,而且不能依赖具体平台同时还要具有灵活性,所以就想到了SQLite,然后拿到源码后开始修改使用,这里为了备忘就简单记录一下,下面就是简单的使用例子,同时也希望能够帮到一些刚刚接触SQLite的同学。
  


static char*create_settinginfo_table_cmd="create table setting_data(Option,DefaultValue,UsingValue)";
static char*select_record_by_key="select * from setting_data WHERE %s='%s'";
static char*insert_record_table_cmd="insert into setting_data values('%s','%s','%s')";
static char*modify_record_by_key="update setting_data SET %s='%s' WHERE %s='%s'";
static char*null_string="null";

static int search_callback_exec0(void*exists,int argc, char ** argv, char ** aszColName)
{
if(exists) {
*((int*)exists)=1;
}
return 0;
}
static int search_callback_exec(void*exists,int argc, char ** argv, char ** aszColName)
{
if(exists) {
*((int*)exists)=1;
strcpy(SETTING_MANAGER.value_buffer,argv[2]);
}
return 0;
}
static enum SETTING_INFO_STATUS get_option_name_value(char*option_name,char**value)
{
int exists=0,ret;
char*err_msg=NULL;
sprintf(SETTING_MANAGER.cmd_buffer,select_record_by_key,"Option",option_name);
ret=sqlite3_exec(SETTING_MANAGER.db,SETTING_MANAGER.cmd_buffer,search_callback_exec,(void*)&exists,&err_msg);
if(ret!=SQLITE_OK) {
printk("Error:%s\n",err_msg);
sqlite3_free(err_msg);
return SETTING_INFO_STATUS_NOT_EXIST;
}
if(exists==0) {
return SETTING_INFO_STATUS_NOT_EXIST;
}
*value=SETTING_MANAGER.value_buffer;
return SETTING_INFO_STATUS_SUCCESS;
}


简答的说一下,首先定义增删改查的字符串,然后根据需要格式化,最终生成执行命令字符串,最后再调用执行SQL语句的函数,这里需要传递几个参数,以查找为例,里面有一个查找到结果后回调的函数,如果查找到结果就回调传递进去的函数,这里需要特别说明一下,每查找到一条记录就会回调一次指定的函数,并把结果传递过去,结果回调函数的参数这里简单说明一下,第一个参数是调用SQL语句执行函数时指定的给结果回调函数的一个用户自定义参数,第二个是一条记录的字段数,对应argv和aszColName,比如argv[0]就是当前记录(可以理解为一行)的第一个字段值,aszColName[0]就是当前记录的字段名,其他的都比较好理解,就不罗嗦了,备忘到此结束。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-307171-1-1.html 上篇帖子: 发布Sqlite数据库 下篇帖子: 帐号管理的SQLite
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表