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,0,&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,sql,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;
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
概述    PureBasic 是一个新的基于"BASIC"标准的"高级"编程语言. 它兼容其它任何 "BASIC" 编译器, 不管它是Amiga 或 PC 格式. 学习 PureBasic非常简单,所以PureBasic已经赢得了很多初学者和资质高深的程序员.   她语法简单却是非常"高级"的,如指针,结构,过程,动态链表等. 富有经验的程序员可以毫不费力的访问系统支持的结构和 Windows API .   PureBasic 是一个兼容性广泛的编程语言,支持 AmigaOS (680x0 和 PowerPC) 和 Windows计算机系统. 这意味着同样的代码可以被编译为两种系统的本地代码而流畅运行.没有象虚拟机和解释器那样的瓶颈,生成的代码是一个优化过的可执行程序.外部库是充分优化了的汇编程序,每个程序非常快,命令常常比C/C++还快或等同. PureBasic主要特色   - 支持486, Pentium (Pro, II, III) 以及更高,支持所有最新系统,支持微软的Vista!   - 内嵌数组, 动态表, 复合体结构,指针,和变量定义   - 已支持类型: Byte (8 bits), Word (16 bits), Long (32 bits), Float (32 bits) 和用户自定义类型(结构)   - 内建字符串类型(characters)   - 支持常量,二进制和十六进制的数值   - 常量和数字数据可写在一个表达   - 标准算术支持遵守符号优先和括号: +, -, /, *, and, or, <<, >>   - 高速编译器, 大约 300 000 行/分钟在P200!   - 过程支持本地和全局变量结构编程   - 支持所有标准 BASIC 关键词: If-Else-EndIf, Repeat-Until, 等等   - 使用专用库操纵 BMP 图象, windows, gadgets, DirectX, 等等   - 使用专用用库充分写了支持优化速度和体积的汇编程序   - 象BASIC关键字一样完全支持Win32 API   - 汇编程序内嵌   - 为快速编译使用固定文件预编译结构   - 结构化 CLI编译器   - 高效率,包括大量关键词,联机帮助   - 支持XML,正则表达式,ftp ,http,.......   - 友好的系统,简单而好用,安装方便

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值