SQLite学习笔记

  1. #include <stdio.h>
  2. #include "e:/libo/SQLite/sqlite3.h"
  3. typedef int (*sqlite3_callback)(void*,int,char**, char**);
  4. //sqlite3的回调函数        
  5. // sqlite 每查到一条记录,就调用一次这个回调
  6. int LoadMyInfo( void * para, int n_column, char ** column_value, char ** column_name )
  7. {
  8.     //para是你在 sqlite3_exec 里传入的 void * 参数
  9.     //通过para参数,你可以传入一些特殊的指针(比如类指针、结构指针),然后在这里面强制转换成对应的类型(这里面是void*类型,必须强制转换成你的类型才可用)。然后操作这些数据
  10.     //n_column是这一条记录有多少个字段 (即这条记录有多少列)
  11.     // char ** column_value 是个关键值,查出来的数据都保存在这里,它实际上是个1维数组(不要以为是2维数组),每一个元素都是一个 char * 值,是一个字段内容(用字符串来表示,以/0结尾)
  12.     //char ** column_name 跟 column_value是对应的,表示这个字段的字段名称
  13.     //这里,我不使用 para 参数。忽略它的存在.
  14.     int i;
  15.     printf( "记录包含 %d 个字段/n", n_column );
  16.     for( i = 0 ; i < n_column; i ++ )
  17.     {
  18.         printf( "字段名:%s  字段值:%s/n",  column_name[i], column_value[i] );
  19.     }
  20.     printf( "------------------/n" );        
  21.     return 0;
  22. }
  23. int main( int , char ** )
  24. {
  25.     sqlite3 * db;
  26.     int result;
  27.     char ** errmsg = NULL;
  28.     result = sqlite3_open( "c://Dcg_database.db", &db );
  29.     if( result != SQLITE_OK )
  30.     {
  31.         //数据库打开失败
  32.         return -1;
  33.     }
  34.     //数据库操作代码
  35.     //创建一个测试表,表名叫 MyTable_1,有2个字段: ID 和 name。其中ID是一个自动增加的类型,以后insert时可以不去指定这个字段,它会自己从0开始增加
  36.     result = sqlite3_exec( db,"CREATE TABLE MyTable_1( ID integer,name char(32) )", NULL, NULL, errmsg );
  37.     if(result != SQLITE_OK )
  38.     {
  39.         printf( "创建表失败,错误码:%d,错误原因:%s/n", result, errmsg );
  40.     }
  41.     //插入一些记录
  42.     result = sqlite3_exec( db, "INSERT INTO MyTable_1( ID,name ) values ( 1,'go' )", NULL, NULL, errmsg );
  43.     if(result != SQLITE_OK )
  44.     {
  45.         printf( "插入记录失败,错误码:%d,错误原因:%s/n", result, errmsg );
  46.     }
  47.     result = sqlite3_exec( db, "INSERT INTO MyTable_1( ID,name ) values ( 2, 'bike' )", 0, 0, errmsg );
  48.     if(result != SQLITE_OK )
  49.     {
  50.         printf( "插入记录失败,错误码:%d,错误原因:%s/n", result, sqlite3_errmsg(db));
  51.     }
  52.     result = sqlite3_exec( db, "INSERT INTO MyTable_1( ID, name ) values ( 3,'bus' )", 0, 0, errmsg );
  53.     if(result != SQLITE_OK )
  54.     {
  55.         printf( "插入记录失败,错误码:%d,错误原因:%s/n", result, sqlite3_errmsg(db) );
  56.     }
  57.     //开始查询数据库
  58.     result = sqlite3_exec( db, "select * from MyTable_1", LoadMyInfo, NULL, errmsg );
  59.     //关闭数据库
  60.     sqlite3_close( db );
  61.     return 0;
  62. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值