Linux下安装sqlite3

软件可以到官网下载: http://www.sqlite.org/download.html
我安装的版本是:sqlite-autoconf-3071502.tar.gz

解压:tar -xvf sqlite-autoconf-3071502.tar.gz

进入目录:cd sqlite-autoconf-3071502

新建一个安装目录:mkdri my_install

执行:./configure --prefix=安装目录
会自动生成Makefile文件

编译并安装:make && make install

如果这时候使用:gcc sqlitest.c -o sqlitest
会出现错误:
sqlitest.c:3:25: fatal error: sqlite3.h: No such file or directory
解决办法:
将头文件复制到系统的include中:
cp 安装目录/include/sqlite3.h /usr/include

这时候再测试一下:gcc sqlitest.c -o sqlitest
会出现错误:
/tmp/ccSaqYiI.o: In function `main':
sqlitest.c:(.text+0x39): undefined reference to `sqlite3_open'
sqlitest.c:(.text+0x50): undefined reference to `sqlite3_errmsg'
sqlitest.c:(.text+0xad): undefined reference to `sqlite3_exec'
sqlitest.c:(.text+0xde): undefined reference to `sqlite3_free'
sqlitest.c:(.text+0x10a): undefined reference to `sqlite3_exec'
sqlitest.c:(.text+0x14d): undefined reference to `sqlite3_exec'
sqlitest.c:(.text+0x19c): undefined reference to `sqlite3_exec'
sqlitest.c:(.text+0x1a8): undefined reference to `sqlite3_close'

这是因为没有库文件
解决办法:
cp /安装目录/lib/libsqlite3.so  /usr/lib
libsqlite3.so是链接文件,一般会自动把libsqlite3.so.8和libsqlite3.so.8.0.6一起复制过去,如果没有的话就手动复制吧。

编译时,使用:
gcc sqlitest.c -o sqlitest -l sqlite3


测试代码:
#include

    #include

    //查询的回调函数声明

    int select_callback(void * data, int col_count, char ** col_values, char ** col_Name);

    int main(int argc, char * argv[])

    {

    const char * sSQL1 = "create table users(userid varchar(20) PRIMARY KEY, age int, birthday datetime);";

    char * pErrMsg = 0;

    int result = 0;

    // 连接数据库

    sqlite3 * db = 0;

    int ret = sqlite3_open("./test.db", &db);

    if( ret != SQLITE_OK ) {

    fprintf(stderr, "无法打开数据库: %s", sqlite3_errmsg(db));

    return(1);

    }

    printf("数据库连接成功!\n");

    // 执行建表SQL

    sqlite3_exec( db, sSQL1, 0, 0, &pErrMsg );

    if( ret != SQLITE_OK ){

    fprintf(stderr, "SQL error: %s\n", pErrMsg);

    sqlite3_free(pErrMsg);

    }

    // 执行插入记录SQL

    result = sqlite3_exec( db, "insert into users values('zhangsan',20,'2011-7-23');", 0, 0, &pErrMsg);

    if(result == SQLITE_OK){

    printf("插入成功!\n");

    }

    result = sqlite3_exec( db, "insert into users values('lisi',20,'2012-9-20');", 0, 0, &pErrMsg);

    if(result == SQLITE_OK){

    printf("插入成功!\n");

    }

    // 查询数据表

    printf("查询数据库内容\n");

    sqlite3_exec( db, "select * from users;", select_callback, 0, &pErrMsg);

    // 关闭数据库

    sqlite3_close(db);

    db = 0;

    printf("数据库关闭成功!\n");

    return 0;

    }

    int select_callback(void * data, int col_count, char ** col_values, char ** col_Name)

    {

    // 每条记录回调一次该函数,有多少条就回调多少次

    int i;

    for( i=0; i < col_count; i++){

    printf( "%s = %s\n", col_Name[i], col_values[i] == 0 ? "NULL" : col_values[i] );

    }

    return 0;

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值