日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sqlite第三方类库FMDB的使用

發(fā)布時間:2025/4/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlite第三方类库FMDB的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ?FMDB是ios平臺下解析sqlite的第三方數(shù)據(jù)庫管理框架,使用非常方便,而且提供了多線程安全的數(shù)據(jù)庫操作,相比coredata來說更加靈活和輕量級。

? ? ? ? fmdb主要有三個類別:

? ? ? ? fmdatabase:用來執(zhí)行sql語句;

? ? ? ?fmresultset:用來使用fmdatabase執(zhí)行查詢后的結(jié)果集合

? ? ? ?fmdatabasequeue:用來在多線程中查詢和更新數(shù)據(jù),它是線程安全的。

? ? ? ?需要注意的是,在iOS環(huán)境下,只有document directory 是可以進(jìn)行讀寫的。

fmdb的使用

1.在新建的項(xiàng)目中,導(dǎo)入libsqlite3的動態(tài)數(shù)據(jù)庫:

注:(在Building Phases中的Link Binary WithLibraries中添加)

2.加入第三方框架fmdb中的這些主要文件:

  

3.在代碼中建立一個數(shù)據(jù)庫,并指定文件路徑:

1 //指定沙盒路徑 2 NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 3 //在指定沙盒路徑下添加sqlite文件 4 NSString *filepath = [path stringByAppendingPathComponent:@"moxue.sqlite"]; 5 //在指定path路徑下創(chuàng)建數(shù)據(jù)庫 6 FMDatabase *db = [FMDatabase databaseWithPath:filepath]; 7 //查看是否打開成功 8 if (![db open]) { 9 return; 10 }else{ 11 NSLog(@"打開成功"); 12 }

4.在代碼中添加列表和列表屬性:(表格的參數(shù)不能是id(大小寫都不可以),否則會出現(xiàn)創(chuàng)建表格失敗,因?yàn)楸砀裨趧?chuàng)建時,表格會自動生成一個id屬性)

1 //在數(shù)據(jù)庫中創(chuàng)建一個列表,并添加列表屬性 2 BOOL result = [db executeUpdate:@"CREATE TABLE IF NOT EXISTS data(id INTEGER PRIMARY KEY AUTOINCREMENT,Title TEXT,date TEXT,Context TEXT,Url TEXT)"]; 3 if (result) { 4 NSLog(@"創(chuàng)建data表成功"); 5 }else{ 6 NSLog(@"創(chuàng)建data表失敗"); 7 }

注意:(表名不能是變量),否則會創(chuàng)建表格失敗或?yàn)榭?#xff0c;正確的寫法為:

NSString *sql = [NSString stringWithFormat:@"select * from %@", tableName]; FMResultSet *rs = [db executeQuery:sql];

?

5.在列表中插入數(shù)據(jù):

1 //插入數(shù)據(jù) 2 BOOL res = [db executeUpdate:@"INSERT INTO data (Title,date,Context,Url) VALUES(?,?,?,?)",@"墨雪",@"2015-10-11",@"我的表格",@"我的Url"]; 3 BOOL res1 = [db executeUpdate:@"INSERT INTO data (Title,date,Context,Url) VALUES(?,?,?,?)",@"劉慶",@"2015-10-10",@"劉慶的表格",@"劉慶的Url"]; 4 if (res1) { 5 NSLog(@"插入data成功"); 6 }else{ 7 NSLog(@"插入data表失敗"); 8 }

6.在類表中刪除數(shù)據(jù)或者列表:

1 BOOL dele = [db executeUpdate:@"DROP TABLE IF EXISTS data"]; 2 BOOL dele1 = [db executeUpdate:@"delete from data where Title = '墨雪'"]; 3 if (dele) { 4 NSLog(@"刪除數(shù)據(jù)成功"); 5 }else{ 6 NSLog(@"刪除數(shù)據(jù)失敗"); 7 }

7.在列表中修改數(shù)據(jù):

1 //修改數(shù)據(jù) 2 BOOL UPDATE = [db executeUpdate:@"update data SET Title = '哈哈' WHERE id = 1" ]; 3 if (UPDATE) { 4 NSLog(@"修改成功"); 5 }else{ 6 NSLog(@"修改失敗"); 7 }

8.在列表中查詢數(shù)據(jù):

1 //查詢數(shù)據(jù) 2 FMResultSet *RS = [db executeQuery:@"SELECT Title from data"]; 3 while ([RS next]) { 4 NSString *name = [RS stringForColumn:@"Title"]; 5 NSLog(@"%@",name); 6 }

?9.?如果應(yīng)用中使用了多線程操作數(shù)據(jù)庫,那么就需要使用FMDatabaseQueue來保證線程安全了。 應(yīng)用中不可在多個線程中共同使用一個FMDatabase對象操作數(shù)據(jù)庫,這樣會引起數(shù)據(jù)庫數(shù)據(jù)混亂。 為了多線程操作數(shù)據(jù)庫安全,FMDB使用了FMDatabaseQueue,使用FMDatabaseQueue很簡單,首先用一個數(shù)據(jù)庫文件地址來初使化FMDatabaseQueue,然后就可以將一個閉包(block)傳入inDatabase方法中。 在閉包中操作數(shù)據(jù)庫,而不直接參與FMDatabase的管理。

1 FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:filepath]; 2 dispatch_queue_t myq1 = dispatch_queue_create("myqueue1", nil); 3 dispatch_async(myq1, ^{ 4 [queue inDatabase:^(FMDatabase *db) { 5 FMResultSet *RS = [db executeQuery:@"SELECT Title from data"];
//NSString *address = [db stringForQuery:@"SELECT Address FROM PersonList WHERE Name = ?",@"John”];
6 while ([RS next]) { 7 NSString *name = [RS stringForColumn:@"Title"]; 8 NSLog(@"%@",name); 9 } 10 11 }]; 12 });

10.關(guān)閉數(shù)據(jù)庫

?1 [db close]; ?

11.另外?FMResultSet 還提供了很多方法來獲得所需的格式的值:

intForColumn: longForColumn: longLongIntForColumn: boolForColumn: doubleForColumn: stringForColumn: dataForColumn: dataNoCopyForColumn: UTF8StringForColumnIndex: objectForColumn: 12.fmda在存儲的過程中,傳給execute方法的參數(shù)必須是NSObject,如果是int,float等需要先將數(shù)據(jù)進(jìn)行包裝,否則傳過去的數(shù)據(jù)要么為null要么導(dǎo)致程序crash。正確的寫法應(yīng)該是:
FMResultSet *rs = [db executeQuery:sql, [NSNumber numberWithLong:mynum];

?

轉(zhuǎn)載于:https://www.cnblogs.com/moxuexiaotong/p/4870438.html

總結(jié)

以上是生活随笔為你收集整理的sqlite第三方类库FMDB的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日日摸日日碰 | 日本黄xxxxxxxxx100| 精品98| 嫩草av在线 | 日日夜夜91 | 亚洲国产成人精品女人久久久 | 动漫3d精品一区二区三区乱码 | 成人看片在线观看 | 嫩草视频在线看 | 亚洲精品小视频在线观看 | 奇米色综合 | 成人动漫av | wwwxxxx日本| 东京热无码av一区二区 | 中文字幕国产专区 | 男男全肉变态重口高h | 国产精品zjzjzj在线观看 | 国产精品8888 | 亚洲免费黄色网址 | 丰满少妇aaaaaa爰片毛片 | 91亚洲精品一区二区乱码 | 伊人色播 | 极品美妇后花庭翘臀娇吟小说 | 射影院| 国产精品伦子伦 | 欧美激情自拍偷拍 | 欧美日韩午夜精品 | 91精品久久久久久综合五月天 | 欧美性videos高清精品 | 夜夜爽天天干 | 美女让男生桶 | 精品国产av 无码一区二区三区 | 精品国产乱码久久久久久蜜臀网站 | 亚洲精品视频在线观看视频 | 中文字幕精品视频在线 | 性生活在线视频 | 久久免费少妇高潮久久精品99 | 精品一区二区三区不卡 | 亚洲国产精品成人综合久久久 | 黄色欧美一级片 | 黄网站免费看 | 亚洲三级久久 | 欧美一区二区三区免费在线观看 | 国产理论在线观看 | 男人的天堂va | xxxx96| 无罩大乳的熟妇正在播放 | 欧美理论片在线观看 | 亚洲精品美女久久久 | 免费激情小视频 | 色婷婷综合久久久久中文一区二区 | 91成人精品| 久久久老熟女一区二区三区91 | 欧美片网站yy | 一级做a爱片性色毛片 | 亚洲精品自拍视频 | 日本黄色录象 | 国产大奶在线观看 | 嫩草综合 | 农村老女人av | 久久久久亚洲av无码专区喷水 | 精品久久久久一区二区国产 | 乱码一区二区三区 | 国产精品18久久久久久无码 | 久久久天堂| av影院在线观看 | 日日爱影视 | 亚洲精品视频一区 | 视频在线观看 | 欧美一区二区三区爽爽爽 | 成人在线黄色 | 国产成人小视频 | 国产精品99re | 国产美女www爽爽爽视频 | 欧美色图影院 | 国产专区av | 成年人精品视频 | 国产视频亚洲 | 国产精品国产三级国产专播品爱网 | 999视频在线观看 | 日韩免费网 | 亚洲熟妇无码爱v在线观看 九色福利 | 欧美成人三级在线观看 | 老司机深夜免费福利 | 日本高清在线一区 | 久久免费电影 | 在线视频91 | 免费在线观看你懂的 | 蜜臀久久精品久久久用户群体 | 日美女网站| 91在线看| wwwyoujizz日本 | 97色伦图片 | 国产精品男人的天堂 | 91免费网站| 撸啊撸av | 在线看成人 | 咪咪色在线视频 | h网站在线看 |