標籤:sqlite3 資料庫
網站:www.sqlite.org1、開啟資料庫: int sqlite3_open( const char *filename, /*資料庫名,可包含路徑*/ sqlite3 **ppDb /*指向sqlite控制代碼的指標*/ ); 成功返回0(宏定義為SQLITE_OK),失敗返回錯誤碼。 資料庫名存在就開啟,不存在就建立並開啟。2、關閉資料庫: int sqlite3_close(sqlite3* ); 成功關閉返回0,失敗返回錯誤碼,開啟一個資料庫記得要關閉。3、出錯判斷: char *sqlite3_errmsg(sqlite3* );4、執行sql操作 int sqlite3_get_table( sqlite3 *db, /*開啟資料庫的控制代碼*/ const char *zSql, /*sql語句*/ char ***pazResult, /*指向sql執行結果的指標*/ int *pnRow, /*滿足條件的記錄的數目*/ int *pnColumn, /*每條記錄包含的欄位數目*/ char **pzErrmsg /*錯誤資訊指標的地址*/ ); 成功返回0,失敗返回錯誤碼。 void sqlite3_free_table(char **result); /*釋放存放記錄的空間*/5、執行sql操作: int sqlite3_exec( sqlite3 *, /*開啟資料庫控制代碼*/ const char *sql, /*sql語句*/ int (*callback) (void *, int, char **, char **), /*執行函數*/ void *, /*函數的參數*/ char **errmsg /*錯誤資訊指標的地址*/ ); 成功返回0,失敗返回錯誤碼。 執行函數:每找到一條自動執行一次函數 typedef int (*sqlite3_callback) ( void *para, /*傳遞給函數的參數*/ int f_num, /*記錄中包含欄位的數目*/ char **f_value, /*每個欄位值的指標數組*/ char **f_name /*每個欄位名稱的指標數組*/ );
------------------------------------------------------------------------------------樣本1:在資料庫中建立一個表#include <stdio.h>#include <stdlib.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\n", azColName[i], argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0;}
int main(int argc, char* argv[]){ sqlite3 *db; char *zErrMsg = 0; int rc; char *sql;
/* Open database */ rc = sqlite3_open("test.db", &db); if( rc ){ fprintf(stderr, "Can‘t open database: %s\n", sqlite3_errmsg(db)); exit(0); }else{ fprintf(stdout, "Opened database successfully\n"); }
/* Create SQL statement */ sql = "create table company(" \ "id int primary key not null," \ "name text not null," \ "age int not null," \ "address char(50)," \ "salary real );";
/* Execute SQL statement */ rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); if( rc != SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); }else{ fprintf(stdout, "Table created successfully\n"); } sqlite3_close(db); return 0;}---------------------------------------------------------------------------------樣本2:在建立的表中查詢資料#include <stdio.h>#include <stdlib.h>#include <sqlite3.h>
int main(int argc, char* argv[]){ sqlite3 *db; char *zErrMsg = 0; int rc; char **dbResult; int nRow, nColumn; int index = 0; int i, j; char *sql;
/* Open database */ rc = sqlite3_open("test.db", &db); if( rc ){ fprintf(stderr, "Can‘t open database: %s\n", sqlite3_errmsg(db)); exit(0); }else{ fprintf(stderr, "Opened database successfully\n"); }
/* Create SQL statement */ sql = "select * from company;";
/* Execute SQL statement */ rc = sqlite3_get_table(db, sql, &dbResult, &nRow, &nColumn, &zErrMsg); if( rc == SQLITE_OK ){ printf("select %d number\n", nRow); for (i=0; i<nRow; i++) { for(j=0; j<nColumn; j++) { printf("name:%s value:%s", dbResult[j], dbResult[index]); } printf("\n"); } } sqlite3_free_table(dbResult); sqlite3_close(db); return 0;}
著作權聲明:有不正確的地方,還望各位指正指導,Thanks!
SQL C 介面