IOS SQLite3的使用

來源:互聯網
上載者:User

標籤:ios   objective-c   sqlite3   

一、什麼是SQLIte     SQLite是一款輕型的嵌入式資料庫,它佔用資源非常的低,在嵌入式裝置中,可能只需要幾百K的記憶體就足夠了。它的處理速度比Mysql、PostgreSQL這兩款著名的資料庫都還快二、資料庫儲存資料的步驟1、建立一個資料庫2、建立一張表(table)3、添加多個欄位(column,列,屬性)4、添加多行記錄(row,每行存放多個欄位對應的值三、SQL語句種類1、資料定義語句(DDL:Data Definition Language)包括create和drop等操作在資料庫中建立新表或刪除表(create table或 drop table)
2、資料動作陳述式(DML:Data Manipulation Language)包括insert、update、delete等操作上面的3種操作分別用於添加、修改、刪除表中的資料
3、資料查詢語句(DQL:Data Query Language)可以用於查詢獲得表中的資料關鍵字select是DQL(也是所有SQL)用得最多的操作其他DQL常用的關鍵字有where,order by,group by和having
三、SQLite的欄位類型integer : 整型值real : 浮點值text : 文本字串blob : 位元據(比如檔案)實際上SQLite是無類型的,但為了保持良好的編程規範,方便程式員之間的交流,編寫建表語句的時候最好還是加上每個欄位的具體類型
四、SQLite的使用1、在IOS中使用SQLite3時,首先需要添加庫檔案libsqlite3.dylib和匯入主標頭檔#import<sqlite3.h>
建立資料庫
// 拼接資料庫地址    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];    NSString *sqlFile = [path stringByAppendingPathComponent:@"student.sqlite"];    // 開啟資料    int result = sqlite3_open(sqlFile.UTF8String, &_db);開啟資料庫會返回一個int類型的傳回值,通過該值可以判斷建立資料庫是否成功     // 判斷是否開啟成功    if (result == SQLITE_OK) {        NSLog(@"開啟成功");        // 建立表        /*         第一個參數: 需要執行SQL語句的資料庫物件         第二個參數: 需要執行的SQL語句         第三個參數: 回呼函數         第四個參數: 第三個參數的參數         第五個參數: 接收錯誤資訊         */                    // 建立表的sql語句        NSString *sql = @"CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT, age INTEGER, score REAL);";        result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);        if (result == SQLITE_OK) {            NSLog(@"建立表成功");        }else        {            NSLog(@"建立表失敗");        }    }else    {        NSLog(@"開啟失敗");    }


以上的代碼執行完,就會在app的沙箱中建立一個資料庫

該資料庫可以用一個叫NaviCat Premium的軟體開啟,如下

表欄位都已經建立好了,現在就可以愉快的進行資料庫操作了2、插入資料
NSString *sql = @"INSERT INTO t_student(age, score, name) VALUES ('28', 100, 'jonathan');";    int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);    if (result == SQLITE_OK) {        NSLog(@"插入成功");    }


3、修改資料
NSString *sql = @"UPDATE t_student SET name = 'LNJ';";    int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);    if (result == SQLITE_OK) {        NSLog(@"修改成功");    }


4、刪除資料
NSString *sql = @"DELETE FROM t_student WHERE id = 1; ";    int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);    if (result == SQLITE_OK) {        NSLog(@"刪除成功");    }



5、查詢資料sqlite3操作中,所有DML語句都是使用sqlite3_exec函數執行SQL語句即可,但是如果是需要查詢資料庫,不能使用sqlite3_exec,因為它並沒有返回查詢到得結果發給我們
NSString *sql = @"SELECT * FROM t_student;";    sqlite3_stmt *stemt = NULL;    /*     第一個參數:需要執行SQL語句的資料庫     第二個參數:需要執行的SQL語句     第三個參數: 告訴系統SQL語句的長度, 如果傳入一個小於0的數, 系統會自動計算     第四個參數:結果集, 裡面存放所有查詢到的資料(不嚴謹)     */    sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stemt, NULL);    // 判斷有沒有查詢結果    while (sqlite3_step(stemt) == SQLITE_ROW) {        // 取出第一個欄位的查詢得結果        const unsigned char *name = sqlite3_column_text(stemt, 1);        // 取出第一個欄位的查詢得結果        int age = sqlite3_column_int(stemt, 2);        // 取出第一個欄位的查詢得結果        double score = sqlite3_column_double(stemt, 3);        NSLog(@"%s %d %f", name, age, score);    }


IOS SQLite3的使用

聯繫我們

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