SQLite编程介绍

发布时间:2021-01-15编辑:脚本学堂
SQLite编程介绍

1.sqlite函数接口
SQLite应用编程接口API非常简单易用,只需要三个用来执行SQL和获得数据的函数。它还是可以扩展的,允许程序员自定义函数然后以callback的形式集合进去。C语言API是其它接口的基础,开放源码团体基于此已经扩展了众多的客户接口,使得其他语言对sqlite的使用也成为可能。

创建或打开数据库

复制代码 代码如下:
int sqlite3_open(const char*, sqlite3**);

执行语句

复制代码 代码如下:
typedef int (*sqlite_callback)(void*,int,char**, char**);
int sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void*, char**);

关闭数据库

复制代码 代码如下:
int sqlite3_close(sqlite3*);

2. SQLite编程实例
Sqlite应用程序实例

编写测试文件

$ vi test_sqlite.c

复制代码 代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>

int main(void)
{

    sqlite3 *db;
    char  *zErrMsg = 0;
    char  **resultp;
    int  nrow;
    int  ncolumn;
    char  *errmsg;
    int  i,j;

    // create db test.db
    if( (sqlite3_open("people.db", &db)) != 0 ){
        fprintf(stderr, "Can't open database: %sn", sqlite3_errmsg(db));
        exit(1);
    }

    // create table
    if( (sqlite3_exec(db, "create table person(name varchar(30) PRIMARY KEY, age int);", NULL, NULL, &zErrMsg)) != SQLITE_OK){
        fprintf(stderr, "SQL error: %sn", zErrMsg);
        exit(1);
    }

    // insert into table
    sqlite3_exec(db, "insert into person values('zhouxh', 30)", NULL, NULL, &zErrMsg);
    sqlite3_exec(db, "insert into person values('hongdy', 28)", NULL, NULL, &zErrMsg);
    sqlite3_exec(db, "insert into person values('xuhong', 26)", NULL, NULL, &zErrMsg);

    // query from table
    sqlite3_get_table(db, "select * from person", &resultp, &nrow, &ncolumn, &errmsg);

    // print query result
    for(i=0;i<=nrow;i++)
    {
        for( j=0;j<ncolumn;j++){
            printf("%st",resultp[i*ncolumn+j]);
        }
        printf("n");
    }

    // close db
    sqlite3_close(db);

    return(0);
}

编译、运行
 

复制代码 代码如下:
# gcc test_sqlite.c -lsqlite3 -o test_sqlite  // 编译
# ./test_sqlite    // 运行

如果使用RPM包安装方式,编译时sqlite.h头文件自动到/usr/include目录去查找,sqlite3.so库文件自动到/usr/lib目录去查找。

如果使用源码安装方式,编译时应加上头文件和库文件搜索路径。

复制代码 代码如下:

$ gcc test_sqlite.c –I /usr/local/sqlite/include –L /usr/local/sqlite/lib -lsqlite3 -o test_sqlite
$ export LD_LIBRARY_PATH=/usr/local/sqlite/lib:$LD_LIBRARY_PATH
$ ./test-sqlite