Sqlite常用関数のオススメ

15500 ワード

Sqlite常用関数
 1、データベースを開く: 
説明:データベースを開くと、ファイル名は必ずしも存在しなくてもいいです.このファイルが存在しないと、自動的に作成されます.最初のパラメータはファイル名で、2番目のパラメータはsqlite 3**構造体ポインタ(キーデータ構造)を定義しています.この構造の下の詳細はどうなりますか?気にしないでください.
int sqlite3_open( 

const char *filename, /* Database filename (UTF-8) */ 

sqlite3 **ppDb /* OUT: SQLite db handle */ 

); 
戻り値:体操が正しいかどうかを示します.(SQLITEuOK操作は正常です.)
2、データベースを閉じる:説明:sqlite 3_を使えばopenはデータベースを開いています.最後はこの関数でデータベースを閉じることを忘れないでください.int sqlite 3_close(sqlite 3*)//パラメータは先ほどの構造体、つまりデータベースのハンドルです.
3、SQL文を実行します.説明:この関数の機能は一つまたは複数のSQL文を実行します.SQL文の間は「;」で区切られます.一つ以上のSQL文を実行する時、第三のパラメータコール関数を指定して、コールバック関数でSqlを実行するための詳細なプロセスが得られます.すべてのSqlが実行されたら0に戻ります.そうでなければ、今回の実行は完全に成功していないと説明します.5番目のパラメータ:実行に失敗した場合(0に戻りませんでした)は、5番目の説明値を表示します.を選択します.
int sqlite3_exec( 

sqlite3*, /*            */ 

const char *sql, /*      Sql    */ 

sqlite_callback, /*      */ 

void *, /*            */ 

char **errmsg /*        */ 

); 
通常sqlite3_calbackとその後ろのvoid*の二つの位置は全部NULLに記入できます.コールバックは必要ないと言います.例えば、insert操作をして、delete操作をすれば、フィードバックを使う必要がありません.selectとしては、フィードバックを使います.sqlite 3はデータを調べますので、どのようなデータが検出されたのかをフィードバックで教えなければなりません.
4、execのフィードバックtypedef int(*sqlite 3 ucallback)(void*,int,char*,char*);説明:あなたのコールバック関数は上の関数の種類として定義しなければなりません.たとえば:
int LoadMyInfo( void * para, int n_column, char ** column_value, char ** column_name ) 

{ 

//para     sqlite3_exec      void *    

//    para   ,            (     、    ),                (     void*   ,              )。         

//n_column              (           ) www.jbxue.com

// char ** column_value      ,            ,       12    ),          char *  ,       (       ,  \0//char ** column_name   column_value     ,           
5、現在の挿入位置を取ります. 
機能:前回挿入した位置に戻ります.1から始まります.long long int sqlite 3_ラスター.insert_rowid(sqlite 3*)6、ノンリカバリーselectクエリ:機能:クエリーSqlを実行し、記録セットを取得する.
int sqlite3_get_table( 

sqlite3*, /*            */ 

const char *sql, /*      Sql    */ 

char ***resultp, /*            */ 

int *nrow, /*      (      ) */ 

int *ncolumn, /*      (   ) */ 

char **errmsg /*        */ 

) 
説明:(wwww.jbxue.com)第3のパラメータは照会結果であり、1次元配列であり、メモリレイアウトは:第1の行はフィールド名であり、後は各フィールドの値である. 
例:
int main( int , char ** ) 

{ 

sqlite3 * db; 

int result; 

char * errmsg = NULL; 

char **dbResult; 

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 ) 

{ 

//      

index = nColumn; //      dbResult             ,  nColumn             

printf( “    %d     
”, nRow );
for( i = 0; i < nRow ; i++ ) { printf( “ %d
”, i+1 ); for( j = 0 ; j < nColumn; j++ ) { printf( “ :%s ?> :%s
”, dbResult[j], dbResult [index] ); ++index; // dbResult , 0 nColumn - 1 , nColumn , , ( ) } printf( “-------
” );
} } // , , char** , sqlite sqlite3_free_table( dbResult ); // sqlite3_close( db ); return 0; }
7、クエリの結果を解放する: 
機能:現在照会されているレコードセットをリリースするメモリvoid sqlite 3_free_テーブル(char*result);
実例:(SQLiteデータベースがコールバック関数を使用する簡単なC言語の例)コードは以下の通りである.
#include <stdio.h> 

#include <sqlite3.h> 

static int callback( void *NotUsed, int argc, char **argv, char **azColName) 

{ 

int i; 

for (i=0; i<argc; i++) 

{ 

printf( "%s = %s
" , azColName[i], argv[i] ? argv[i] : "NULL" ); } printf( "
" );
return 0; } int main( int argc, char **argv) { sqlite3 *db; char *zErrMsg = 0; int rc; if ( argc!=3 ) { fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT
" , argv[0]); return 1; } rc = sqlite3_open(argv[1], &db); if ( rc ) { fprintf(stderr, "Can't open database: %s
" , sqlite3_errmsg(db)); sqlite3_close(db); return 1; } rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); if ( rc!=SQLITE_OK ) { fprintf(stderr, "SQL error: %s
" , zErrMsg); sqlite3_close(db); return 1; } sqlite3_close(db); return 0; }
コンパイル: 
[root@localhosttest)膌gcc sql.c-o sql-l sqlite 3