SQLite3 API 使用大全 E-mail:18918737 (at) qq dot com,智有不明
sqlite3_exec 函数通过修改你传入的指针的指针,把你提供的指针指向错误提示信息,这样
sqlite3_exec 函数外面就可以通过这个 char*得到具体错误提示。
说明:通常,sqlite3_callback 和它后面的 void * 这两个位置都可以填 NULL。填
NULL 表示你不需要回调。比如你做 insert 操作,做 delete 操作,就没有必要使用回调。
而当你做 select 时,就要使用回调,因为 sqlite3 把数据查出来,得通过回调告诉你查
出了什么数据。
i.2 exec 的回调
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 )
{
//数据库打开失败
5