sqlite3_get_table使用举例

void GetTable()
{
sqlite3 * db;
int result;
char * errmsg = NULL;
char **dbResult; //是 char ** 类型,两个*号
int nRow, nColumn;
int i , j;
int index; 
 
result = sqlite3_open( “c:\\Dcg_database.db”, &db );
 
if( result != SQLITE_OK )
{
//数据库打开失败
return -1;
}
 
//数据库操作代码
//假设前面已经创建了 MyTable_1 表
//开始查询,传入的 dbResult 已经是 char **,这里又加了一个 & 取地址符,传递进去的就成了char ***
result = sqlite3_get_table( db, “select * from MyTable_1”, &dbResult, &nRow, &nColumn, &errmsg );
if( SQLITE_OK == result )
{
//查询成功
printf("表格共%d 记录!\n", nRow);
printf("表格共%d 列!\n", nColumn);
// 前两个字段为字段名 field0, field1, row[0][0], row[0][1], row[1][0], row[1][1] ... ...
// 是一维数组,不是二维数组,反正记着第0,第1列的值为字段名,然后才是字段值;
printf( "字段名|字段值\n");
printf( "%s | %s\n", dbResult[0], dbResult[1]);
index = nColumn;
for( i = 0; i < nRow ; i ) { printf( “第 %d 条记录\n”, i); for( j = 0 ; j < nColumn; j++ ) { printf( “字段名:%s ?> 字段值:%s\n”, dbResult[j], dbResult [index] ); index++;
// dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示 } printf( “-------\n” ); } } //到这里,不论数据库查询是否成功,都释放 char** 查询结果,使用 sqlite 提供的功能来释放 sqlite3_free_table( dbResult ); //关闭数据库 sqlite3_close( db ); return 0; } }*/

 

posted on 2017-04-05 18:52  humbird  阅读(11195)  评论(0编辑  收藏  举报

导航