iOS數(shù)據(jù)存儲方式FMDB

從網(wǎng)上下載FMDB的原碼,將其拖入到項目中疾宏,然后在Link Binary With Libraries中添加libsqlite3.dylib,就可以用了

實現(xiàn)如下:
#import"FMDatabase.h"

#import"FMDatabaseAdditions.h"

#import"FMDatabaseQueue.h"

@interfaceViewController ()

@end

@implementationViewController

-(void)viewDidLoad

{

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

-(void)didReceiveMemoryWarning

{

[superdidReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}


-(void)viewDidUnload{

[selfsetNameText:nil];

[selfsetAgeText:nil];

[selfsetSexText:nil];

[selfsetShowLabel:nil];

[superviewDidUnload];

}

//保存

-(IBAction)saveBtn:(id)sender{

FMDatabase* database=[FMDatabase databaseWithPath:[selfdatabasePath]];

if(![database open]){

NSLog(@"Open database failed");

return;

}

if(![database tableExists:@"user"]){

[database executeUpdate:@"create table user (id integer primary key autoincrement not null,name text,age integer,sex text)"];

}

BOOLinsert=[database executeUpdate:@"insert into user (name,age,sex) values (?,?,?)",_nameText.text,[NSNumber numberWithInteger:[_ageText.text integerValue]],_sexText.text];

//下面注釋的也能實現(xiàn)數(shù)據(jù)的插入,只不過它是傳入了字典

//NSMutableDictionary* argsDict=[NSMutableDictionary dictionary];

//[argsDict setObject:_nameText.text forKey:@"name"];

//[argsDict setObject:_ageText.text forKey:@"age"];

//[argsDict setObject:_sexText.text forKey:@"sex"];

//BOOL insert=[database executeUpdate:@"insert into user (name,age,sex) values (:name,:age,:sex)" withParameterDictionary:argsDict];

if(insert){

UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"提示"message:@"保存成功"delegate:nilcancelButtonTitle:nilotherButtonTitles:@"確定",nil];

[alert show];

}else{

NSLog(@"insert failed");

}

[database close];

//下面注釋的這一段也是創(chuàng)建表只不過它是多線程安全的菜秦,而上面的在多線程中是不安全的

//FMDatabaseQueue* queue=[FMDatabaseQueue databaseQueueWithPath:[self databasePath]];

//[queue inDatabase:^(FMDatabase* database){

//if (![database tableExists:@"user"]){

//[database executeUpdate:@"create table user (id integer primary key autoincrement not null,name text,age integer,sex text)"];

//}

//BOOL insert=[database executeUpdate:@"insert into user (name,age,sex) values (?,?,?)",_nameText.text,[NSNumber numberWithInteger:[_ageText.text integerValue]],_sexText.text];

//if (insert){

//UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"提示" message:@"保存成功" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"確定",nil];

//[alert show];

//}else{

//NSLog(@"insert failed");

//}

//

//}];

//[queue close];

}

//顯示所有數(shù)據(jù)庫中的數(shù)據(jù)

-(IBAction)showBtn:(id)sender{

FMDatabase* database=[FMDatabase databaseWithPath:[selfdatabasePath]];

if(![database open]){

return;

}

//注意此處的FMResultSet可以不用關(guān)閉包券,因為數(shù)據(jù)庫關(guān)閉的時候FMResultSet自動關(guān)閉

FMResultSet* resultSet=[database executeQuery:@"select* from user"];

NSString* str=@"";

while([resultSet next]){

NSString* name=[resultSet stringForColumn:@"name"];

NSInteger age=[resultSet intForColumn:@"age"];

NSString* sex=[resultSet stringForColumn:@"sex"];

str=[str stringByAppendingFormat:@"Name:%@,Age:%d,Sex:%@\n",name,age,sex];

NSLog(@"Name:%@,Age:%d,Sex:%@\n",name,age,sex);

}

_showLabel.text=str;

[database close];

}

//查詢

-(IBAction)checkBtn:(id)sender{

FMDatabase* database=[FMDatabase databaseWithPath:[selfdatabasePath]];

if(![database open]){

return;

}

FMResultSet* resultSet=[database executeQuery:@"select* from user where name = ?",@"chen"];

NSString* str=@"";

while([resultSet next]){

NSString* name=[resultSet stringForColumn:@"name"];

NSInteger age=[resultSet intForColumn:@"age"];

NSString* sex=[resultSet stringForColumn:@"sex"];

str=[str stringByAppendingFormat:@"Name:%@,Age:%d,Sex:%@\n",name,age,sex];

}

_showLabel.text=str;

[database close];

}

//刪除

-(IBAction)deleteBtn:(id)sender{

FMDatabase* database=[FMDatabase databaseWithPath:[selfdatabasePath]];

if(![database open]){

return;

}

BOOLdelete=[database executeUpdate:@"delete from user where name = ?",@"chen"];

if(delete){

UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"提示"message:@"刪除成功"delegate:nilcancelButtonTitle:nilotherButtonTitles:@"確定",nil];

[alert show];

}

[database close];

}

//更新

-(IBAction)updateBtn:(id)sender{

FMDatabase* database=[FMDatabase databaseWithPath:[selfdatabasePath]];

if(![database open]){

return;

}

BOOLupdate=[database executeUpdate:@"update user set age = ? where name= ?",[NSNumber numberWithInt:20],@"chen"];

if(update){

UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"提示"message:@"更新成功"delegate:nilcancelButtonTitle:nilotherButtonTitles:@"確定",nil];

[alert show];

}

[database close];

}

- (NSString* )databasePath

{

NSString* path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES) objectAtIndex:0];

NSString* dbPath=[path stringByAppendingPathComponent:@"user.db"];

returndbPath;

}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市强品,隨后出現(xiàn)的幾起案子腋舌,更是在濱河造成了極大的恐慌帆离,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件僧叉,死亡現(xiàn)場離奇詭異奕枝,居然都是意外死亡,警方通過查閱死者的電腦和手機瓶堕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門隘道,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事谭梗⊥睿” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵激捏,是天一觀的道長设塔。 經(jīng)常有香客問我,道長远舅,這世上最難降的妖魔是什么闰蛔? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮图柏,結(jié)果婚禮上序六,老公的妹妹穿的比我還像新娘。我一直安慰自己蚤吹,他們只是感情好难咕,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著距辆,像睡著了一般余佃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跨算,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天爆土,我揣著相機與錄音,去河邊找鬼诸蚕。 笑死步势,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的背犯。 我是一名探鬼主播坏瘩,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼漠魏!你這毒婦竟也來了倔矾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤柱锹,失蹤者是張志新(化名)和其女友劉穎哪自,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體禁熏,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡壤巷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞧毙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胧华。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡寄症,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出矩动,到底是詐尸還是另有隱情有巧,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布铅忿,位于F島的核電站剪决,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏檀训。R本人自食惡果不足惜柑潦,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望峻凫。 院中可真熱鬧渗鬼,春花似錦、人聲如沸荧琼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽命锄。三九已至堰乔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脐恩,已是汗流浹背镐侯。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驶冒,地道東北人苟翻。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像骗污,于是被迫代替她去往敵國和親崇猫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349

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