Sqlite常用関数のオススメ
15500 ワード
Sqlite常用関数
1、データベースを開く:
説明:データベースを開くと、ファイル名は必ずしも存在しなくてもいいです.このファイルが存在しないと、自動的に作成されます.最初のパラメータはファイル名で、2番目のパラメータはsqlite 3**構造体ポインタ(キーデータ構造)を定義しています.この構造の下の詳細はどうなりますか?気にしないでください.
2、データベースを閉じる:説明:sqlite 3_を使えばopenはデータベースを開いています.最後はこの関数でデータベースを閉じることを忘れないでください.int sqlite 3_close(sqlite 3*)//パラメータは先ほどの構造体、つまりデータベースのハンドルです.
3、SQL文を実行します.説明:この関数の機能は一つまたは複数のSQL文を実行します.SQL文の間は「;」で区切られます.一つ以上のSQL文を実行する時、第三のパラメータコール関数を指定して、コールバック関数でSqlを実行するための詳細なプロセスが得られます.すべてのSqlが実行されたら0に戻ります.そうでなければ、今回の実行は完全に成功していないと説明します.5番目のパラメータ:実行に失敗した場合(0に戻りませんでした)は、5番目の説明値を表示します.を選択します.
4、execのフィードバックtypedef int(*sqlite 3 ucallback)(void*,int,char*,char*);説明:あなたのコールバック関数は上の関数の種類として定義しなければなりません.たとえば:
機能:前回挿入した位置に戻ります.1から始まります.long long int sqlite 3_ラスター.insert_rowid(sqlite 3*)6、ノンリカバリーselectクエリ:機能:クエリーSqlを実行し、記録セットを取得する.
例:
機能:現在照会されているレコードセットをリリースするメモリvoid sqlite 3_free_テーブル(char*result);
実例:(SQLiteデータベースがコールバック関数を使用する簡単なC言語の例)コードは以下の通りである.
[root@localhosttest)膌gcc sql.c-o sql-l sqlite 3
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 , , 1 ( 2 ), 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