SQLite的應用

來源:互聯網
上載者:User

標籤: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(@"查詢語句有問題");    }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.