Linux下安装sqlite3

来源:互联网 发布:河北干部网络管理学院 编辑:程序博客网 时间:2024/04/29 09:34
软件可以到官网下载: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 ordirectory
解决办法:
将头文件复制到系统的include中:
cp 安装目录/include/sqlite3.h/usr/include

这时候再测试一下:gcc sqlitest.c -osqlitest
会出现错误:
/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, "SQLerror: %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
原创粉丝点击