Sqlite3 語句解析
自己看示例吧,解釋的很清楚了。
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_*”, &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 )
{
//查詢成功
index = nColumn; //前面說過 dbResult 前面第一行數據是字段名稱,從 nColumn 索引開始才是真正的數據
printf( “查到%d條記錄\n”, nRow );
for( i = 0; i < nRow ; i )
{
printf( “第 %d 條記錄\n”, i 1 );
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;
}
}*/
SQLite語句,懂得進,高分
-- 創建表時
create table test(
a integer,
b integer DEFAULT 1,
c integer
);
insert into test (a) values(12);
select * from test;
a b c
-------------------
12 1
-- 如果表已經創建 那么,由于SQLite不支持對列的改名和修改類型等操作,那么需要這樣修改。
alter table test to test_temp;
-- 重新創建表,增加缺省值
create table test(
a integer,
b integer DEFAULT 1,
c integer DEFAULT 2
);
-- 將表中數據拿回來
inset into test (a, b, c)
select a, b, c from test_temp;