標籤:style blog color 檔案 資料 for ar 問題
1》開啟資料庫並創表:
// 獲得資料庫檔案的路徑 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *filename = [doc stringByAppendingPathComponent:@"students.sqlite"]; // 將OC字串 轉成 C語言字串 const char *cfilename = filename.UTF8String; // 1.開啟資料庫(如果資料庫檔案不存在,sqlite3_open函數會自動建立資料庫檔案) int result = sqlite3_open(cfilename, &_db); if (result == SQLITE_OK) { // 開啟成功 NSLog(@"成功開啟資料庫"); // 2.創表 const char *sql = "CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);"; char *erroMsg = NULL; result = sqlite3_exec(self.db, sql, NULL, NULL, &erroMsg); if (result == SQLITE_OK) { NSLog(@"成功創表"); } else {// printf("創表失敗--%s--%s-%d", erroMsg, __FILE__, __LINE__); NSLog(@"創表失敗--%s--%@-%d", erroMsg, [NSString stringWithUTF8String:__FILE__], __LINE__); } } else { NSLog(@"開啟資料庫失敗"); }
2》操作資料庫
<1>插入資料:
for (int i = 0; i<20; i++) { // 1.拼接SQL語句 NSString *name = [NSString stringWithFormat:@"Jack-%d", arc4random_uniform(100)]; int age = arc4random_uniform(20) + 30; NSString *sql = [NSString stringWithFormat:@"INSERT INTO t_student (name, age) VALUES (‘%@‘, %d);", name, age]; // 2.執行SQL語句 char *erroMsg = NULL; sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, &erroMsg); if (erroMsg) { NSLog(@"插入資料失敗--%s", erroMsg); } else { NSLog(@"成功插入資料"); } }
<2>查詢資料
const char *sql = "SELECT id, name, age FROM t_student WHERE age <= 30;"; // 進行查詢前的準備工作 // -1 代表系統會自動計算SQL語句的長度 // sqlite3_stmt:用來取資料 sqlite3_stmt *stmt = NULL; if (sqlite3_prepare_v2(self.db, sql, -1, &stmt, NULL) == SQLITE_OK) { // SQL語句沒有問題 NSLog(@"查詢語句沒有問題"); // 每調一次sqlite3_step函數,stmt就會指向下一條記錄 while (sqlite3_step(stmt) == SQLITE_ROW) { // 找到一條記錄 // 取出資料 // 取出第0欄欄位的值(int類型的值) int ID = sqlite3_column_int(stmt, 0); // 取出第1欄欄位的值(tex類型的值) const unsigned char *name = sqlite3_column_text(stmt, 1); // 取出第2欄欄位的值(int類型的值) int age = sqlite3_column_int(stmt, 2); NSLog(@"%d %s %d", ID, name, age); } } else { NSLog(@"查詢語句有問題"); }