iOS:OC--數(shù)據(jù)庫操作(增刪查改)

  • 導入libsqlite3.0.tbd庫
導入sql庫
  • 實現(xiàn)數(shù)據(jù)庫的增刪查改
#import "ViewController.h"
#import <sqlite3.h>
@interface ViewController ()
//更新
- (IBAction)updateBtn;
//查詢
- (IBAction)selectBtn;
//添加
- (IBAction)insterBtn;
//刪除
- (IBAction)deleteBtn;
//db就是數(shù)據(jù)庫的象征弃甥,增,刪,改她渴,查就是操作db實例
@property(nonatomic,assign)sqlite3 *db;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // 數(shù)據(jù)庫文件一般存儲在沙盒當中倚评,所以首先獲取數(shù)據(jù)庫文件路徑
    NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
    NSLog(@"%@",document);
    //創(chuàng)建數(shù)據(jù)庫文件
    NSString *fileName = [document stringByAppendingPathComponent:@"Student.sqlite"];
    //打開數(shù)據(jù)庫
    //第一個參數(shù):const char *filename
    //C語言字符串(需要將OC轉(zhuǎn)為C語言的字符串)
    //第二個參數(shù):sqlite3 **ppDb 數(shù)據(jù)庫實例
    const char *cfileName = fileName.UTF8String;
    int result = sqlite3_open(cfileName, &_db);
    if (result == SQLITE_OK) {//SQLITE_OK 數(shù)據(jù)庫打開成功
        NSLog(@"數(shù)據(jù)庫打開成功");
        //數(shù)據(jù)庫只有打開成功才可創(chuàng)建表
        //建表
        //1.代表的是數(shù)據(jù)庫
        //2.sql語句 if not exists:如果不存在就創(chuàng)建忆畅,反之...
        //primary key autoincrement 主鍵自增
        //
        const char *sql = "create table if not exists t_student (id integer primary key autoincrement,name text not null,age integer not null);";
        //3.指向函數(shù)的指針
        //4.nil 第一個參數(shù)回調(diào)
        //5.錯誤信息
        result = sqlite3_exec(self.db, sql, NULL, NULL, NULL);
        if (result == SQLITE_OK) {
            NSLog(@"建表成功");
        } else {
            NSLog(@"建表失敗---%s---%d",__FILE__,__LINE__);
        }
    }else{
        NSLog(@"數(shù)據(jù)庫打開失敗");
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];

}
//更新
- (IBAction)updateBtn {
    
}
//查詢
- (IBAction)selectBtn {
    //第一個參數(shù):數(shù)據(jù)庫實例
    //第二個參數(shù):sql語句
    const char *sql = "select id, name, age from t_student where age = 40";
    //第三個參數(shù):-1 -> 系統(tǒng)自動計算sql語句長度
    //第四個參數(shù):伴隨指針 -> 取數(shù)據(jù)
    sqlite3_stmt *stmt = NULL;
    //第五個參數(shù):NULL
    if (sqlite3_prepare(self.db, sql, -1, &stmt, NULL) == SQLITE_OK) {
        NSLog(@"查詢語句沒有問題");
        //取數(shù)據(jù)
        //sqlite3_step每調(diào)用一次setp就從&stmt中取一次數(shù)據(jù)
        while (sqlite3_step(stmt) == SQLITE_ROW) {//SQLITE_ROW 行數(shù)
            //取出數(shù)據(jù)
            //取出第一列字段的值(int 類型)
            int ID = sqlite3_column_int(stmt, 0);
            //取出第二列字段的值(text 類型)
            const unsigned char *name = sqlite3_column_text(stmt, 1);
            //取出第三列字段的值 (int 類型)
            int age = sqlite3_column_int(stmt, 2);
            NSLog(@"%d %s %d",ID,name,age);
        }
    } else {
        NSLog(@"select error挎扰!");
    }
}
//插入
- (IBAction)insterBtn {
    char *errorMsg = NULL;
    for (int i=0; i<20; i++) {
        //
        NSString *name = [NSString stringWithFormat:@"Xm-%d",arc4random_uniform(100)];
        int age = arc4random_uniform(20) + 30;
        //sql語句
        NSString *sql = [NSString stringWithFormat:@"insert into t_student(name,age) values('%@','%d')",name,age];
        
        sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, &errorMsg);
    }
    if (errorMsg) {
        NSLog(@"數(shù)據(jù)有誤 %s",errorMsg);
    }else{
        NSLog(@"插入成功");
    }
}
//刪除
- (IBAction)deleteBtn {
}
@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末佛玄,一起剝皮案震驚了整個濱河市瞧省,隨后出現(xiàn)的幾起案子扯夭,更是在濱河造成了極大的恐慌,老刑警劉巖鞍匾,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件交洗,死亡現(xiàn)場離奇詭異,居然都是意外死亡橡淑,警方通過查閱死者的電腦和手機藕筋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梳码,“玉大人隐圾,你說我怎么就攤上這事£瑁” “怎么了暇藏?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長濒蒋。 經(jīng)常有香客問我盐碱,道長把兔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任瓮顽,我火速辦了婚禮县好,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘暖混。我一直安慰自己缕贡,他們只是感情好,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布拣播。 她就那樣靜靜地躺著晾咪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贮配。 梳的紋絲不亂的頭發(fā)上谍倦,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音泪勒,去河邊找鬼昼蛀。 笑死,一個胖子當著我的面吹牛圆存,可吹牛的內(nèi)容都是我干的叼旋。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼辽剧,長吁一口氣:“原來是場噩夢啊……” “哼送淆!你這毒婦竟也來了税产?” 一聲冷哼從身側(cè)響起怕轿,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辟拷,沒想到半個月后撞羽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡衫冻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年诀紊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隅俘。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡邻奠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出为居,到底是詐尸還是另有隱情碌宴,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布蒙畴,位于F島的核電站贰镣,受9級特大地震影響呜象,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碑隆,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一恭陡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧上煤,春花似錦休玩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嘉熊,卻和暖如春遥赚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阐肤。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工凫佛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人孕惜。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓愧薛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親衫画。 傳聞我的和親對象是個殘疾皇子毫炉,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容