oc sqlite3點簡單使用

1.創(chuàng)建或者打開數據庫

static sqlite3 *_db;
+ (void)initialize
{
    NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
    // 拼接文件名
    NSString *filePath = [cachePath stringByAppendingPathComponent:@"contact.sqlite"];
    
    // 打開數據庫
    if (sqlite3_open(filePath.UTF8String, &_db) == SQLITE_OK) {
        NSLog(@"打開成功");
    }else{
        NSLog(@"打開失敗");
    }
    
    // 創(chuàng)建表格
    NSString *sql = @"create table if not exists t_contact (id integer primary key autoincrement,name text,phone text);";
    char *error;
    
    sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &error);
    
    if (error) {
        NSLog(@"創(chuàng)建表格失敗");
    }else{
        NSLog(@"創(chuàng)建表格成功");

    }
    
}

2.增刪改 oc封裝方法

+ (BOOL)execWithSql:(NSString *)sql
{
    BOOL flag;
    char *error;
    
    sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &error);
    
    if (error) {
        flag = NO;
        NSLog(@"%s",error);
    }else{
        
        flag = YES;
        
    }
    
    return flag;
}

注意

sqlite3_exec()可以執(zhí)行任何SQL語句概漱,比如創(chuàng)表承边、更新、插入和刪除操作闺骚。但是一般不用它執(zhí)行查詢語句梳猪,因為它不會返回查詢到的數據
sqlite3_exec()還可以執(zhí)行的語句:
開啟事務:begin transaction;
回滾事務:rollback;
提交事務:commit;

帶占位符帶數據插入

char *sql = "insert into t_person(name, age) values(?, ?);";
sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) {
    sqlite3_bind_text(stmt, 1, "母雞", -1, NULL);
    sqlite3_bind_int(stmt, 2, 27);
}
if (sqlite3_step(stmt) != SQLITE_DONE) {
    NSLog(@"插入數據錯誤");
}
sqlite3_finalize(stmt);

代碼解析:
sqlite3_prepare_v2()返回值等于SQLITE_OK麻削,說明SQL語句已經準備成功,沒有語法問題
sqlite3_bind_text():大部分綁定函數都只有3個參數
第1個參數是sqlite3_stmt *類型
第2個參數指占位符的位置春弥,第一個占位符的位置是1呛哟,不是0
第3個參數指占位符要綁定的值
第4個參數指在第3個參數中所傳遞數據的長度,對于C字符串匿沛,可以傳遞-1代替字符串的長度
第5個參數是一個可選的函數回調扫责,一般用于在語句執(zhí)行后完成內存清理工作
sqlite_step():執(zhí)行SQL語句,返回SQLITE_DONE代表成功執(zhí)行完畢
sqlite_finalize():銷毀sqlite3_stmt *對象

3.查找

+ (NSArray *)contactWithSql:(NSString *)sql
{
    NSMutableArray *arrM = [NSMutableArray array];
    // 準備查詢逃呼,生成句柄鳖孤,操作查詢數據結果
    sqlite3_stmt *stmt;
    if (sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stmt, NULL) == SQLITE_OK) {
        
        // 執(zhí)行句柄
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            
            NSString *name = [NSString stringWithUTF8String:sqlite3_column_text(stmt, 1)];
             NSString *phone = [NSString stringWithUTF8String:sqlite3_column_text(stmt, 2)];
            
            Contact *c = [Contact contactWithName:name phone:phone];
            [arrM addObject:c];
        }
        
        
    }
    
    return arrM;
    
}

代碼解析
sqlite3_step()返回SQLITE_ROW代表遍歷到一條新記錄
sqlite3_column_*()用于獲取每個字段對應的值,第2個參數是字段的索引蜘渣,從0開始

4.模糊查詢

  // o  select * from t_contact where name like '%searchText%' or phone like '%searchText%'
    // % 在stringWithFormat中有特殊意思
    // %% == %
    // 輸入一個文字淌铐,進行模糊查詢,查看下名字或者電話是否包含文字
    NSString *sql = [NSString stringWithFormat:@"select * from t_contact where name like '%%%@%%' or phone like '%%%@%%';",searchText,searchText];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蔫缸,一起剝皮案震驚了整個濱河市腿准,隨后出現的幾起案子,更是在濱河造成了極大的恐慌拾碌,老刑警劉巖吐葱,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異校翔,居然都是意外死亡弟跑,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門防症,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孟辑,“玉大人,你說我怎么就攤上這事蔫敲∷撬裕” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵奈嘿,是天一觀的道長貌虾。 經常有香客問我,道長裙犹,這世上最難降的妖魔是什么尽狠? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任衔憨,我火速辦了婚禮,結果婚禮上袄膏,老公的妹妹穿的比我還像新娘践图。我一直安慰自己,他們只是感情好哩陕,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布平项。 她就那樣靜靜地躺著,像睡著了一般悍及。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上接癌,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天心赶,我揣著相機與錄音,去河邊找鬼缺猛。 笑死缨叫,一個胖子當著我的面吹牛,可吹牛的內容都是我干的荔燎。 我是一名探鬼主播耻姥,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼有咨!你這毒婦竟也來了琐簇?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤座享,失蹤者是張志新(化名)和其女友劉穎婉商,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體渣叛,經...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡丈秩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了淳衙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蘑秽。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖箫攀,靈堂內的尸體忽然破棺而出肠牲,到底是詐尸還是另有隱情,我是刑警寧澤匠童,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布埂材,位于F島的核電站,受9級特大地震影響汤求,放射性物質發(fā)生泄漏俏险。R本人自食惡果不足惜严拒,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望竖独。 院中可真熱鬧裤唠,春花似錦、人聲如沸莹痢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竞膳。三九已至航瞭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坦辟,已是汗流浹背刊侯。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锉走,地道東北人滨彻。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像挪蹭,于是被迫代替她去往敵國和親亭饵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內容