2.將第三方庫(kù)加載進(jìn)工程:方法是直接將FMDB的源文件拖拽進(jìn)工程即可;3.使用第三方庫(kù)訪問(wèn)數(shù)據(jù)庫(kù)當(dāng)然了,對(duì)于高手而言,對(duì)第三方庫(kù)進(jìn)行了解后,上手是很快的,對(duì)于小白,只能一步一步走啦。3.1指定數(shù)據(jù)庫(kù)的存儲(chǔ)路徑,一般都是" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

數(shù)據(jù)庫(kù)使用之第三方庫(kù) FMDB

系統(tǒng) 1743 0

下載 FMDB

?

1. 引進(jìn) sqlite3 工具箱,在要進(jìn)行數(shù)據(jù)庫(kù)操作的類里引進(jìn)頭文件 : 因?yàn)榈谌杰浖瑯邮鞘褂? sqlite 工具箱來(lái)操作數(shù)據(jù)庫(kù)的,只不過(guò)是簡(jiǎn)化了操作,讓語(yǔ)法更接近 OC 的語(yǔ)法, 而不需要使用過(guò)多的 C 語(yǔ)法;

      #import <sqlite3.h>
    

2. 將第三方庫(kù)加載進(jìn)工程:方法是直接將 FMDB 的源文件拖拽進(jìn)工程即可;

3. 使用第三方庫(kù)訪問(wèn)數(shù)據(jù)庫(kù)

當(dāng)然了,對(duì)于高手而言,對(duì)第三方庫(kù)進(jìn)行了解后,上手是很快的,對(duì)于小白,只能一步一步走啦。

3.1 指定數(shù)據(jù)庫(kù)的存儲(chǔ)路徑,一般都是在沙盒根目錄下地 Documents 文件夾下,文件的后綴名是 .sqlite:如? db_students.sqlite;

? NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent: @" Documents/db_student.sqlite " ]; ?

3.2 先創(chuàng)建一個(gè) FMDatabase 的對(duì)象 *_db;

? FMDatabase *_db; ?

使用前要先初始化

? _db = [[FMDatabase alloc] initWithPath:filePath]; ?

看它的初始化方法:在初始化方法里沒(méi)有做什么多余的操作,除了指定數(shù)據(jù)庫(kù)存儲(chǔ)的路徑外,沒(méi)有其他操作,0x00 是一個(gè)十六進(jìn)制的地址,代表 nil(或者說(shuō) NULL )

數(shù)據(jù)庫(kù)使用之第三方庫(kù) FMDB

創(chuàng)建并打開數(shù)據(jù)庫(kù):

[_db open];

這句代碼的作用有兩個(gè):

1)若數(shù)據(jù)庫(kù)不存在,則創(chuàng)建并打開;

2)若數(shù)據(jù)庫(kù)已經(jīng)存在,則打開數(shù)據(jù)庫(kù);

也許你還記得:sqlite3_open(path, &_db);

這兩句代碼的作用是一樣的,只不過(guò)前者更接近 OC 的語(yǔ)法,其實(shí)質(zhì)還是通過(guò)后者操作數(shù)據(jù)庫(kù)的。

3.3 創(chuàng)建表

      
        if
      
       (![_db tableExists:
      
        @"
      
      
        tb_students
      
      
        "
      
      
        ])

{

     [_db executeUpdate:
      
      
        @"
      
      
        create table tb_students (ID integer primary key not null unique, name text, age integer)
      
      
        "
      
      
        ];

} 
      
      
        //
      
      
         先調(diào)用方法,判斷表是否已經(jīng)存在,若不存在則創(chuàng)建表
      
    

整個(gè)過(guò)程則為:

      NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:
      
        @"
      
      
        Documents/db_student.sqlite
      
      
        "
      
      
        ];

_db 
      
      =
      
         [[FMDatabase alloc] initWithPath:filePath];


      
      
        if
      
      
         ([_db open])

{

   
      
      
        if
      
       (![_db tableExists:
      
        @"
      
      
        tb_students
      
      
        "
      
      
        ])

   {

       [_db executeUpdate:
      
      
        @"
      
      
        create table tb_students (ID integer primary key not null unique, name text, age integer)
      
      
        "
      
      
        ];

    }

}

[_db close]; 
      
      
        //
      
      
         當(dāng)對(duì)數(shù)據(jù)庫(kù)的操作結(jié)束后不要忘記關(guān)閉數(shù)據(jù)庫(kù)
      
    

3.4 插入、刪除、更新、查詢表的操作

第一步:打開數(shù)據(jù)庫(kù) ?

第二部:數(shù)據(jù)庫(kù)操作

第三部:關(guān)閉數(shù)據(jù)庫(kù)

需要注意的是,在進(jìn)行對(duì)表的插入、刪除、更新時(shí),調(diào)用的方法是? - (BOOL)executeUpdate:(NSString*)sql, ...; ?

看示例:

      - (
      
        void
      
      )insertTable:(ZYStudent *
      
        )stu

{

    
      
      
        if
      
      
         ([_db open])

    {

        [_db executeUpdate:
      
      
        @"
      
      
        insert into tb_students (name, age) values (?, ?)
      
      
        "
      
      
        , stu.name, [NSNumber numberWithInt:stu.age]];

    } 
      
      
        //
      
      
         這里需要注意的是:替換 sql 語(yǔ)句里的 ?,不能直接使用基本類型的數(shù)據(jù),而是需要將基本類型轉(zhuǎn)換為 對(duì)象類型,符合 OC 的語(yǔ)法
      
      
            

    [_db close];

}
      
    

對(duì)表進(jìn)行查詢時(shí),調(diào)用的方法是:? - (FMResultSet *)executeQuery:(NSString*)sql, ...; ?

原因大概也都知道:插入、刪除、更新操作時(shí),主要表現(xiàn)出來(lái)的變化是數(shù)據(jù)表,受影響的時(shí)表中的行(即一條或幾條記錄),而查詢操作不同,進(jìn)行查詢操作的目的就是要獲得表中的數(shù)據(jù),那么就應(yīng)該將獲得數(shù)據(jù)存儲(chǔ),這樣就新引用了一個(gè)概念:結(jié)果集(ResultSet)。

在查詢操作里:可以簡(jiǎn)單的將理解為結(jié)果集是用來(lái)接收查詢數(shù)據(jù)的,然后就可以將數(shù)據(jù)從結(jié)果集取出來(lái),通過(guò)一定手段展示出來(lái)。

      - (
      
        void
      
      
        )selectTable

{

    NSMutableArray 
      
      *array =
      
         [NSMutableArray array];

    
      
      
        if
      
      
         ([_db open])

    {

        FMResultSet 
      
      *rs = [_db executeQuery:
      
        @"
      
      
        select * from tb_students
      
      
        "
      
      
        ];

        
      
      
        while
      
      
         ([rs next])

        {

            ZYStudent 
      
      *stu =
      
         [[[ZYStudent alloc] init] autorelease];

            stu.ID 
      
      = [rs intForColumnIndex:
      
        0
      
      
        ];

            stu.name 
      
      = [rs stringForColumnIndex:
      
        1
      
      
        ];

            stu.age 
      
      = [rs intForColumnIndex:
      
        2
      
      
        ];

            [array addObject:stu];

        }

    }

    [_db close];

    NSLog(
      
      
        @"
      
      
        ________%@
      
      
        "
      
      
        , array);

}
      
    

?

數(shù)據(jù)庫(kù)使用之第三方庫(kù) FMDB


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 图片区乱熟图片区小说 | 午夜视频网址 | 欧美日韩亚洲综合另类ac | 久久久久久久影院 | 国产综合在线视频 | 色婷婷色综合激情国产日韩 | 国产精品久久人妻无码网站一区无 | 午夜剧场在线免费观看 | 久久精品国产亚洲一区二区 | 99伊人| 九色成人蝌蚪国产精品电影在线 | 日韩欧美一区二区在线观看 | 午夜精品久久久久久久男人的天堂 | 一级欧美日韩 | 波多野结衣三区 | 日韩在线免费视频 | 日韩午夜伦y4480私人影院 | 色综合美国色农夫网 | 一级片| 精品一区二区视频 | 亚洲精品一区二区三区蜜桃久 | 日本高免费观看在线播放 | 精品日韩欧美国产一区二区 | 99超级碰碰成人香蕉网 | 国产视频中文字幕 | 综合欧美一区二区三区 | 精品一区二区久久久久久久网站 | 亚洲人成亚洲人成在线观看 | 91精品啪在线观看国产91九色 | 99亚洲视频 | www.狠狠色 | 成熟自由日本语热亚洲人 | 欧美色视频网 | 国产高清视频在线 | 日本高清午夜色wwwσ | 美日韩免费视频 | 国产精品美女久久久免费 | 国产精品国产a | 婷婷精品| 亚洲欧美日韩激情在线观看 | www.天堂av.com|