SQLite數(shù)據(jù)庫的簡單使用

DEMO地址下載

創(chuàng)建數(shù)據(jù)庫:

一:接下來如果該數(shù)據(jù)庫不存在需要創(chuàng)建這個數(shù)據(jù)庫收奔,創(chuàng)建的過程寫在viewDidLoad里面:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    
    // 一:創(chuàng)建數(shù)據(jù)庫
    NSString *docsDir;
    NSArray *dirPaths;
    
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  //  NSLog(@"dirpaths = %@",dirPaths);
    docsDir = [dirPaths objectAtIndex:0];
  //  NSLog(@"docsDir = %@",docsDir);
    databasePath = [[NSString alloc] initWithString:[docsDir stringByAppendingPathComponent:@"info.db"]];
  //  NSLog(@"databasePath = %@",databasePath);
    NSFileManager *filemanager = [NSFileManager defaultManager];
    
    if ([filemanager fileExistsAtPath:databasePath] == NO) {
        const char *dbpath = [databasePath UTF8String];
        if (sqlite3_open(dbpath, &dataBase)==SQLITE_OK) {
            char *errmsg;
            const char *createsql = "CREATE TABLE IF NOT EXISTS INFO (ID INTEGER PRIMARY KEY AUTOINCREMENT, NUM TEXT, CLASSNAME TEXT,NAME TEXT)";
            
            if (sqlite3_exec(dataBase, createsql, NULL, NULL, &errmsg)!=SQLITE_OK) {
                status.text = @"create table failed.";
            }
        }
        else {
            status.text = @"create/open failed.";
        }
    }
}

因為SQLite數(shù)據(jù)庫是文件數(shù)據(jù)庫烙无,是保存在文件系統(tǒng)中的,ios下:
Documents:應用中用戶數(shù)據(jù)可以放在這里详拙,iTunes備份和恢復的時候會包括此目錄
tmp:存放臨時文件帝际,iTunes不會備份和恢復此目錄,此目錄下文件可能會在應用退出后刪除
Library/Caches:存放緩存文件饶辙,iTunes不會備份此目錄蹲诀,此目錄下文件不會在應用退出刪除
我們的數(shù)據(jù)庫文件是保存在Documents下的。
切記弃揽,因為用的是C語法脯爪,sqlite3_open傳入的是database的地址!

二:保存信息:

屏幕快照 2017-01-11 下午12.19.09.png
//保存信息
- (IBAction)saveinfo:(id)sender {
    
    sqlite3_stmt *statement;
    
    const char *dbpath = [databasePath UTF8String];
    
    if (sqlite3_open(dbpath, &dataBase)==SQLITE_OK) {
        if ([num.text isEqualToString:@""]) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"SORRY!" message:@"number cannot be nil!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];
        }
        else {
        
        NSString *insertSql = [NSString stringWithFormat:@"INSERT INTO INFO (num,classname,name) VALUES(\"%@\",\"%@\",\"%@\")",num.text,classname.text,name.text];
        const char *insertsatement = [insertSql UTF8String];
        sqlite3_prepare_v2(dataBase, insertsatement, -1, &statement, NULL);
        if (sqlite3_step(statement)==SQLITE_DONE) {
            status.text = @"save to DB.";
            num.text = @"";
            classname.text = @"";
            name.text = @"";
        }
        else {
            status.text = @"save failed!";
        }
        sqlite3_finalize(statement);
        sqlite3_close(dataBase);
        }
    }
}

三:在往數(shù)據(jù)庫里面插入數(shù)據(jù)的時候矿微,我們需要先打開數(shù)據(jù)庫痕慢,然后執(zhí)行插入語句,結束的時候切記要關閉數(shù)據(jù)庫涌矢!

// 查詢信息
- (IBAction)searchResult:(id)sender {
    const char *dbpath = [databasePath UTF8String];
    
    sqlite3_stmt *statement;
    
    if (sqlite3_open(dbpath, &dataBase)==SQLITE_OK) {
        NSString *querySQL = [NSString stringWithFormat:@"SELECT classname,name from info where num=\"%@\"",num.text];
        const char *querystatement = [querySQL UTF8String];
        if (sqlite3_prepare_v2(dataBase, querystatement, -1, &statement, NULL)==SQLITE_OK) {
            if (sqlite3_step(statement)==SQLITE_ROW) {
                NSString *classnameField = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 0)];
                classname.text = classnameField;
                NSString *nameField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)];
                name.text = nameField;
                
                status.text = @"find~~~";                
            }
            else {
                status.text = @"did not find you need.";
            }
            sqlite3_finalize(statement);
        }
        sqlite3_close(dataBase);
    }
}

四:查詢操作同樣也是需要先打開數(shù)據(jù)庫掖举,再查詢,最后關閉數(shù)據(jù)庫娜庇,在這里就指定了根據(jù)學號來查詢塔次,其他情況未涉及。

可以使用Navicat軟件打開數(shù)據(jù)包來查看數(shù)據(jù)


屏幕快照 2017-01-11 下午12.20.10.png
屏幕快照 2017-01-11 下午12.19.09.png

五:在本例中還涉及一個觸摸屏幕來關閉鍵盤:

在viewcontroller.h中添加申明代碼:

//點擊屏幕收起鍵盤
- (IBAction)backgroundTap:(id)sender {
    [num resignFirstResponder];
    [classname resignFirstResponder];
    [name resignFirstResponder];
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末名秀,一起剝皮案震驚了整個濱河市俺叭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌泰偿,老刑警劉巖熄守,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耗跛,居然都是意外死亡裕照,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門调塌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晋南,“玉大人,你說我怎么就攤上這事羔砾「杭洌” “怎么了偶妖?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長政溃。 經常有香客問我趾访,道長,這世上最難降的妖魔是什么董虱? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任扼鞋,我火速辦了婚禮,結果婚禮上愤诱,老公的妹妹穿的比我還像新娘云头。我一直安慰自己,他們只是感情好淫半,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布溃槐。 她就那樣靜靜地躺著,像睡著了一般科吭。 火紅的嫁衣襯著肌膚如雪竿痰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天砌溺,我揣著相機與錄音,去河邊找鬼变隔。 笑死规伐,一個胖子當著我的面吹牛,可吹牛的內容都是我干的匣缘。 我是一名探鬼主播猖闪,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肌厨!你這毒婦竟也來了培慌?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤柑爸,失蹤者是張志新(化名)和其女友劉穎吵护,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體表鳍,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡馅而,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了譬圣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓮恭。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖厘熟,靈堂內的尸體忽然破棺而出屯蹦,到底是詐尸還是另有隱情维哈,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布登澜,位于F島的核電站阔挠,受9級特大地震影響,放射性物質發(fā)生泄漏帖渠。R本人自食惡果不足惜谒亦,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望空郊。 院中可真熱鬧份招,春花似錦、人聲如沸狞甚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哼审。三九已至谐腰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涩盾,已是汗流浹背十气。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留春霍,地道東北人砸西。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像址儒,于是被迫代替她去往敵國和親芹枷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容

  • 需要原文的可以留下郵箱我給你發(fā)莲趣,這里的文章少了很多圖鸳慈,懶得網上粘啦 1數(shù)據(jù)庫基礎 1.1數(shù)據(jù)庫定義 1)數(shù)據(jù)庫(D...
    極簡純粹_閱讀 7,421評論 0 46
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)喧伞,斷路器走芋,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 概論 所謂的持久化,就是將數(shù)據(jù)保存到硬盤中潘鲫,使得在應用程序或機器重啟后可以繼續(xù)訪問之前保存的數(shù)據(jù)绿聘。在iOS開發(fā)中,...
    Leeson1989閱讀 1,916評論 4 1
  • 小曉媽咪閱讀 113評論 0 0
  • 高冷喵現(xiàn)在全是常見的寵物了次舌,我也是十分喜歡的熄攘!其實小時候真的沒見過,我們家的第一只貓還是我剛上初中時彼念,我爸從...
    筱瞳冰心913閱讀 398評論 0 3