SQLite3简单入门及C++ API

 转载请注明出处:http://www.cnblogs.com/StartoverX/p/4660487.html 

 项目用到SQLite3,简单记录一下。

 MySQL不同,SQLite3的数据库基于文件存放,不需要和服务器进程通信,直接通过API调用读取.db文件就可以读取数据库内容。

 1.安装

ubuntu下直接apt-get即可:sudo apt-get install sqlite3 libsqlite3-dev

 2.数据类型(DataType)

 SQLite3有五中基本类型,分别是NULL、INTEGER、REAL、TEXT、BLOB。

  NULL:空值。

  INTEGER:带符号整型,根据值的大小以1,2,3,4,6或8字节存放

  REAL:float实数类型,以8字节IEEE浮点数存放。

  TEXT:值是文本字符串,使用数据库编码(UTF-8,UTF-16BE或者UTF-16LE)存放。

  BLOB:只是一个数据块,完全按照输入存放(即没有准换),存储如图片、音视频等。

 3.创建数据库

  shell进入需要创建数据库文件的目录,直接sqlite3 test.db即可,查询databases,tables用.databases,.tables,查看帮助用.help。

 4.C++ API

 

 以上是最基本的sqlite3 c++ api,而我们最经常使用的就是sqlite3_open(),sqlite3_exec(),sqlite3_close()。sqlite3_exec()是对sqlite3_prepare()sqlite3_step()sqlite3_column(),和 sqlite3_finalize()的一个封装,完成了一个sql语句的执行和返回,举例如下:      

注意callback为sqlite3_exec()的回调函数,而sqlite3_exec()的第三个参数会被传入callback的第一个参数中,由此实现与上下文的通信。
01  #include <stdio.h>

02  #include <sqlite3.h>

03  

04  static int callback(void *arg, int argc, char **argv, char **azColName){ 05    int i; 06    for(i=0; i<argc; i++){ 07      printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); 08 } 09    printf("\n"); 10    return 0; 11 } 12  

13  int main(int argc, char **argv){ 14    sqlite3 *db; 15    char *zErrMsg = 0; 16    int rc; 17  

18    if( argc!=3 ){ 19      fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]); 20      return(1); 21 } 22    rc = sqlite3_open(argv[1], &db); 23    if( rc ){ 24      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); 25 sqlite3_close(db); 26      return(1); 27 } 28    rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); 29    if( rc!=SQLITE_OK ){ 30      fprintf(stderr, "SQL error: %s\n", zErrMsg); 31 sqlite3_free(zErrMsg); 32 } 33 sqlite3_close(db); 34    return 0; 35  }

 

参考:An Introduction To The SQLite C/C++ Interface

     SQLite In 5 Minutes or Less

你可能感兴趣的:(sqlite3)