sqlite3 中执行带变量的命令

最近一直在学sqlite3的用法,学了sqlite3的基本用法之后,接着学C语言和sqlite3结合的使用方法,学完了这个之后又学qt中sqlite3的使用方法,不过到现在为止,我都没有成功用qt中的类写好了sqlite3的程序,我是直接用C语言写的,在qt中调用也是没有问题的,纠结了这么久,先这样吧,以后若是需要再更加深入的学习了。学了这些之后,只会用基本sqlite3_exec()执行没有带变量的语句,但是这样的使用太不广泛了,平时写代码的时候更多的时候是需要传入一个变量的,比如我们要插入一个信息到表中,这个表中有(id,name)两列,我们自然是想着每次要插入的时候直接将(id,name)传进去,然后就调用insert语句就可以完成操作了,这部分的知识就需要用到变量的部分了,网上找了不少例子来看,终于找到了一个满意的了,于是我几乎是照搬了过来用于记录,原网址链接是:http://blog.csdn.net/xiaoaid01/article/details/17892579

记得在运行的时候加上sqlite3的路径

gcc sqlite.c -o sqlite -lsqlite3

还有需要在当前目录下建立一个test.db数据库,在里面创建一个user_info的表,表的内容为(id,name)

以下是代码

#include <stdio.h> #include <stdio.h> #include <string.h> #include <sqlite3.h> static sqlite3 *db; int callback(void *NotUsed,int argc,char **argv,char **azColName) { int i; for(i = 0;i < argc;i++) { printf("%s = %s\n",azColName[i],argv[i] ); } printf("\n"); return 0; } sqlite3 * db_connect(char *db_name) { int rc = sqlite3_open(db_name,&db); return db; } int db_exec_stmt(char * sql) { int rc; char *zErrMsg = 0; rc = sqlite3_exec(db,sql,callback,&zErrMsg); if(rc != sqlITE_OK) { fprintf(stderr,"sql error:%s\n",zErrMsg); sqlite3_free(zErrMsg); //exit(1); } return 0; } void db_exec() { char *sql = "insert into user_info(id,name) values(?,?)"; sqlite3_stmt *stmt; const char *tail; int i; int ncols; int rc; char *name = "condice"; rc = sqlite3_prepare(db,strlen(sql),&stmt,NULL); if(rc != sqlITE_OK) { fprintf(stderr,"sql error:%s\n",sqlite3_errmsg(db)); } sqlite3_bind_int(stmt,1,28); sqlite3_bind_text(stmt,2,name,strlen(name),sqlITE_STATIC); sqlite3_step(stmt); sqlite3_finalize(stmt); } int main(int argc,char **argv) { char *db_name = "test.db"; db = db_connect(db_name); db_exec(); sqlite3_close(db); return 0; }

相关文章

安装 在Windows上安装SQLite。 访问官网下载下Precompliled Binaries for Windows的两个压缩包。 创建s...
一、安装 下载地址:http://www.sqlite.org/download.html 将Precompiled Binaries for Windows下的包下...
实例: 会员信息管理 功能:1.查看数据库 2.清空数据库 3.增加会员 4.删除会员 5.更新会员 6.查找会员  ...
关于SQLite SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的在读写效率、消耗总量、延迟时间和整...