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; } }*/