加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Sqlite的API编程初体验

发布时间:2020-12-12 19:58:02 所属栏目:百科 来源:网络整理
导读:Sqlite是一个嵌入式数据库,现在用的挺多的,具体的特性、用途在官网上讲的很详细了(见http://www.sqlite.org/docs.html) 还有些书,官网上也有推荐(见http://www.sqlite.org/books.html): 《 The Definitive Guide to SQLite (2nd edition,2010) 》 《

Sqlite是一个嵌入式数据库,现在用的挺多的,具体的特性、用途在官网上讲的很详细了(见http://www.sqlite.org/docs.html)

还有些书,官网上也有推荐(见http://www.sqlite.org/books.html):

The Definitive Guide to SQLite (2nd edition,2010)

Using SQLite (2010)

SQLite 3 - Einstieg in die Datenbankwelt (2010)

Inside Symbian SQL (2010)

The SQL Guide to SQLite (2009)

An Introduction to SQLite - 2nd Edition (2009)等等。

我下载了第一本看了下,中文名叫《SQLite权威指南》,里面讲的挺详细的,包括各个平台的安装,管理,SQL语句,API等。


在官网的《SQLiteIn5MinutesOrLess》小节中有段小示例程序,我改了下,自己体验了把:

//NotUsed是没使用的,从sqlite3_exec可以传递给回调函数的通道
//argc是返回行的列数
//argv是返回行的字符串数组形式
//azColName是返回行每个列的名字,和argv顺序对应
static int callback(void *NotUsed,int argc,char **argv,char **azColName){
	int i;
	for(i=0; i<argc; i++){
		printf("%s = %sn",azColName[i],argv[i] ? argv[i] : "NULL");
	}
	printf("n");
	return 0;
}

int main(int argc,char **argv){
	sqlite3 *db;
	char *zErrMsg = 0;
	int rc;

	if( argc!=2 ){
		fprintf(stderr,"Usage: %s DATABASE SQL-STATEMENTn",argv[0]);
		return(1);
	}
	rc = sqlite3_open(argv[1],&db);//打开句柄
	if( rc ){
		fprintf(stderr,"Can't open database: %sn",sqlite3_errmsg(db));
		sqlite3_close(db);
		return(1);
	}

    while (1)
    {
        char sqlstatement[1000] = {0};
        printf("INPUT A SQL STATEMENT : ");
        fflush(stdout);
        gets(sqlstatement);

        rc = sqlite3_exec(db,sqlstatement,callback,&zErrMsg);//执行语句
        if( rc!=SQLITE_OK ){
            fprintf(stderr,"SQL error: %sn",zErrMsg);
            sqlite3_free(zErrMsg);
        }
    }

    sqlite3_close(db);
    return 0;
}


主要API只有以下几个:先用sqlite3_open()打开一个句柄,然后用sqlstatement接收终端输入的sql语句(可以是用分号分割的多个语句),然后用sqlite3_exec()执行该语句,sql语句返回行由作为该函数的第三个参数的回调函数callback()输出到终端。


编译用gcc:gcc sqlitetest.c -o sqlitetest -g -Wall -lsqlite3

下面是已经建好的表test:



运行该程序结果:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读