Linux下通過C語言操作SqlLite數據庫
Linux下通過C語言操作SqlLite數據庫
下面的代碼用于寫入數據到sqlite數據庫和遍歷數據
#include <stdio.h>include <sqlite3.h>
//查詢的回調函數聲明 int select_callback(void * data, int col_count, char col_values, char col_Name);
int main(int argc, char argv[]) { const char sSQL1 = "create table users(userid varchar(20) PRIMARY KEY, age int, birthday datetime);"; char pErrMsg = 0; int result = 0; // 連接數據庫 sqlite3 db = 0; int ret = sqlite3_open("./test.db", &db); if( ret != SQLITE_OK ) { fprintf(stderr, "無法打開數據庫: %s", sqlite3_errmsg(db)); return(1); } printf("數據庫連接成功!\n");
// 執行建表SQL sqlite3_exec( db, sSQL1, 0, 0, &pErrMsg ); if( ret != SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", pErrMsg); sqlite3_free(pErrMsg); }
// 執行插入記錄SQL result = sqlite3_exec( db, "insert into users values('張三',20,'2011-7-23');", 0, 0, &pErrMsg); if(result == SQLITE_OK){ printf("插入數據成功\n"); } result = sqlite3_exec( db, "insert into users values('李四',20,'2012-9-20');", 0, 0, &pErrMsg); if(result == SQLITE_OK){ printf("插入數據成功\n"); }
// 查詢數據表 printf("查詢數據庫內容\n"); sqlite3_exec( db, "select * from users;", select_callback, 0, &pErrMsg);
// 關閉數據庫 sqlite3_close(db); db = 0; printf("數據庫關閉成功!\n");
return 0; }
int select_callback(void * data, int col_count, char col_values, char col_Name) { // 每條記錄回調一次該函數,有多少條就回調多少次 int i; for( i=0; i < col_count; i++){ printf( "%s = %s\n", col_Name[i], col_values[i] == 0 ? "NULL" : col_values[i] ); }
return 0; }</pre>