- #include <stdio.h>
- #include "e:/libo/SQLite/sqlite3.h"
- typedef int (*sqlite3_callback)(void*,int,char**, char**);
- //sqlite3的回调函数
- // sqlite 每查到一条记录,就调用一次这个回调
- int LoadMyInfo( void * para, int n_column, char ** column_value, char ** column_name )
- {
- //para是你在 sqlite3_exec 里传入的 void * 参数
- //通过para参数,你可以传入一些特殊的指针(比如类指针、结构指针),然后在这里面强制转换成对应的类型(这里面是void*类型,必须强制转换成你的类型才可用)。然后操作这些数据
- //n_column是这一条记录有多少个字段 (即这条记录有多少列)
- // char ** column_value 是个关键值,查出来的数据都保存在这里,它实际上是个1维数组(不要以为是2维数组),每一个元素都是一个 char * 值,是一个字段内容(用字符串来表示,以/0结尾)
- //char ** column_name 跟 column_value是对应的,表示这个字段的字段名称
- //这里,我不使用 para 参数。忽略它的存在.
- int i;
- printf( "记录包含 %d 个字段/n", n_column );
- for( i = 0 ; i < n_column; i ++ )
- {
- printf( "字段名:%s 字段值:%s/n", column_name[i], column_value[i] );
- }
- printf( "------------------/n" );
- return 0;
- }
- int main( int , char ** )
- {
- sqlite3 * db;
- int result;
- char ** errmsg = NULL;
- result = sqlite3_open( "c://Dcg_database.db", &db );
- if( result != SQLITE_OK )
- {
- //数据库打开失败
- return -1;
- }
- //数据库操作代码
- //创建一个测试表,表名叫 MyTable_1,有2个字段: ID 和 name。其中ID是一个自动增加的类型,以后insert时可以不去指定这个字段,它会自己从0开始增加
- result = sqlite3_exec( db,"CREATE TABLE MyTable_1( ID integer,name char(32) )", NULL, NULL, errmsg );
- if(result != SQLITE_OK )
- {
- printf( "创建表失败,错误码:%d,错误原因:%s/n", result, errmsg );
- }
- //插入一些记录
- result = sqlite3_exec( db, "INSERT INTO MyTable_1( ID,name ) values ( 1,'go' )", NULL, NULL, errmsg );
- if(result != SQLITE_OK )
- {
- printf( "插入记录失败,错误码:%d,错误原因:%s/n", result, errmsg );
- }
- result = sqlite3_exec( db, "INSERT INTO MyTable_1( ID,name ) values ( 2, 'bike' )", 0, 0, errmsg );
- if(result != SQLITE_OK )
- {
- printf( "插入记录失败,错误码:%d,错误原因:%s/n", result, sqlite3_errmsg(db));
- }
- result = sqlite3_exec( db, "INSERT INTO MyTable_1( ID, name ) values ( 3,'bus' )", 0, 0, errmsg );
- if(result != SQLITE_OK )
- {
- printf( "插入记录失败,错误码:%d,错误原因:%s/n", result, sqlite3_errmsg(db) );
- }
- //开始查询数据库
- result = sqlite3_exec( db, "select * from MyTable_1", LoadMyInfo, NULL, errmsg );
- //关闭数据库
- sqlite3_close( db );
- return 0;
- }
SQLite学习笔记
最新推荐文章于 2024-09-26 16:09:03 发布