你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS SQLite3的使用

IOS SQLite3的使用

編輯:IOS開發綜合
一、什麼是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
創建數據庫
// 拼接數據庫地址
    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);
    }


  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved