X-Code中用sqlite儲存資料

來源:互聯網
上載者:User

標籤:

開發中會經常遇到一些資料需要儲存,如果僅僅儲存使用者名稱或者簡單的使用者資訊,那儲存的方式有多種,簡單的歸檔解檔即可解決.但遇到大量資料需要儲存時,比如使用者瀏覽過的新聞或者微博資訊,在下次使用者開啟app時,希望在未連網的狀態下,也能看見上次瀏覽過的內容,這時候用歸檔顯然就不合適了.做過PC端開發的朋友都知道,資料存放區有對應的資料庫,那iOS開發中是否也有"資料庫"呢?

我們知道,移動端的開發非常注重效能,不可能使用MySql,SqlServer,DB2等大型資料庫儲存資料,而sqlite是一種輕量型資料庫,恰好解決了這個問題,贅述這麼多,終於要進入正題:X-Code中如何使用sqlite:

直接上代碼:

首先匯入一個動態庫:libsqlite3.dylib

匯入標頭檔:

#import <sqlite3.h>

建立資料庫:

- (void)viewDidLoad{    [super viewDidLoad];        // 1.獲得沙箱中的資料庫檔案名    NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"student.sqlite"];        // 2.建立(開啟)資料庫(如果資料庫檔案不存在,會自動建立)    int result = sqlite3_open(filename.UTF8String, &_db);    if (result == SQLITE_OK) {        NSLog(@"成功開啟資料庫");                // 3.創表        const char *sql = "create table if not exists t_student (id integer primary key autoincrement, name text, age integer);";        char *errorMesg = NULL;        int result = sqlite3_exec(_db, sql, NULL, NULL, &errorMesg);        if (result == SQLITE_OK) {            NSLog(@"成功建立t_student表");        } else {            NSLog(@"建立t_student表失敗:%s", errorMesg);        }    } else {        NSLog(@"開啟資料庫失敗");    }}
- (IBAction)insert{    for (int i = 0; i < 30; i++) {        NSString *name = [NSString stringWithFormat:@"Jack-%d", arc4random()%100];        int age = arc4random()%100;        NSString *sql = [NSString stringWithFormat:@"insert into t_student (name, age) values(‘%@‘, %d);", name, age];                char *errorMesg = NULL;        int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errorMesg);        if (result == SQLITE_OK) {            NSLog(@"成功添加資料");        } else {            NSLog(@"添加資料失敗:%s", errorMesg);        }    }}
- (IBAction)query{    // 1.定義sql語句    const char *sql = "select id, name, age from t_student where name = ?;";        // 2.定義一個stmt存放結果集    sqlite3_stmt *stmt = NULL;        // 3.檢測SQL語句的合法性    int result = sqlite3_prepare_v2(_db, sql, -1, &stmt, NULL);    if (result == SQLITE_OK) {        NSLog(@"查詢語句是合法的");                // 設定預留位置的內容        sqlite3_bind_text(stmt, 1, "jack", -1, NULL);                // 4.執行SQL語句,從結果集中取出資料//        int stepResult = sqlite3_step(stmt);        while (sqlite3_step(stmt) == SQLITE_ROW) { // 真的查詢到一行資料,此處類似Ado.net中的reader.read()            // 獲得這行對應的資料                        // 獲得第0列的id            int sid = sqlite3_column_int(stmt, 0);                        // 獲得第1列的name            const unsigned char *sname = sqlite3_column_text(stmt, 1);                        // 獲得第2列的age            int sage = sqlite3_column_int(stmt, 2);                        NSLog(@"%d %s %d", sid, sname, sage);        }    } else {        NSLog(@"查詢語句非合法");    }}

 

X-Code中用sqlite儲存資料

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.