OC 資料庫儲存,使用FMDB進行資料庫操作

2021-07-22 21:05:03 字數 4107 閱讀 2102

第一種: 乙個資料庫中,同時儲存多張資料表(此處舉例為兩張表)

.h檔案

#import 

@class

goodsdetailsvo;

extern

nsstring * datastoretype(int level);

extern

nsstring * tablename;

@inte***ce databasecenter : nsobject

/*** 獲取單例物件

*/+ (databasecenter *)shareinstance;

/**

* 新增一條資料

*/- (bool)addrecordwithgoodsdetailsvo:(goodsdetailsvo *)model;

/*** 刪除一條資料

*/- (bool)removerecordwithgoodsdetailsvo:(goodsdetailsvo *)model;

/*** 檢查某件商品是否被記錄過

*/- (bool)i***istrecordwithgoodsdetailsvo:(goodsdetailsvo *)model;

/*** 獲取記錄的列表

*/- (nsarray *)recordlist;

/***  刪除所有資料

*/- (void)removeallrecord;

@end

.m檔案

#import 

"databasecenter.h"

#import "goodsdetailsvo.h"

#import "fmdatabase.h"

@inte***ce

databasecenter()

@end

@implementation databasecenter

nsstring* datastoretype (int type)

return str;

}/**

* 獲取單例物件

*/+ (databasecenter *)shareinstance

);[dc createdatabasetable];

return dc;

}- (id)init

returnself; }

/*** 初始化資料庫

*/- (void)initdatabasetwodatastore

}/**

* 建立資料表

*/- (void)createdatabasetable

else  

else

}}/*** 新增一條記錄

*/- (bool)addrecordwithgoodsdetailsvo:(goodsdetailsvo *)model

else

return ret;

}/**

* 刪除一條資料

*/- (bool)removerecordwithgoodsdetailsvo:(goodsdetailsvo *)model

else

return ret;

}/**

* 檢查某件商品是否被瀏覽過

*/- (bool)i***istrecordwithgoodsdetailsvo:(goodsdetailsvo *)model

return count>0;

}/**

* 獲取記錄的列表

*/- (nsarray *)recordlist

return marr;

}/**

*  刪除所有資料

*/- (void)removeallrecord

}@end使用

nsstring *tablename;

//標註使用哪個表

tablename

= datastoretype(0);

//初始化物件

databasecenter*dc = [databasecenter

shareinstance];

//判斷是否記錄過此條資料

if(![dc

i***istrecordwithgoodsdetailsvo

:self

.detailmodel])

//獲取記錄列表

self

.datalist

= [databasecenter

shareinstance].recordlist;

//刪除指定的一條資料

goodsrecordcell *cell = (goodsrecordcell*)[tableviewcellforrowatindexpath:indexpath];       

[dc 

removerecordwithgoodsdetailsvo

:cell.model];

//刪除所有資料

[dc removeallrecord];

第二種: 乙個資料庫中,只存在一張資料表(此處以儲存高德地圖位置資訊為例,基本上都是大同小異的)

.h檔案

#import 

@class

@inte***ce databasecenter : nsobject

/*** 獲取單例物件

*/+ (databasecenter *)shareinstance;

/*** 新增一條資料

*//**

* 刪除一條資料

*//**

* 檢查此位址是否已經存入歷史記錄

*//**

* 獲取記錄的列表

*/- (nsarray *)recordlist;

/***  刪除所有資料

*/- (void)removeallrecord;

@end

.m檔案

#import 

"databasecenter.h"

@inte***ce

databasecenter()

@end

@implementation databasecenter

/*** 獲取單例物件

*/+ (databasecenter *)shareinstance

return dc;

}- (id)init

returnself;

}/*** 初始化資料庫

*/- (void)initdatabasedatastore

//建立歷史記錄資料表

nsstring

*sql =@"create table if not exists historyrrecordlist(uid,name,type,address,province,pcode,city,citycode,district,adcode,gridcode,latitude,longitude)";

bool b = [_database

executeupdate:sql];    

if(!b)

else

}/**

* 新增一條記錄

*/else

}/**

* 刪除一條資料

*/else

}/**

* 檢查此位址是否已經存入歷史記錄

*/return count>0;

}/**

* 獲取記錄的列表

*/- (nsarray *)recordlist;

return marr;

}/**

*  刪除所有資料

*/- (void)removeallrecord;

}@end

使用: 除了不需要標註表名,其他的與第一種方式一樣,請檢視第一種方式

注意: 此處以高德地圖為例,api中的經緯度的模型物件是location,儲存的時候,要存入的是location的latitude與longitud的數值,而不能存入location這個物件。取值的時候,要先初始化amapgeopoint物件,用amapgeopoint的物件來接收資料庫中的儲存的值。不初始化amapgeopoint物件的話,取出來的經緯度的值是空的。原因是因為amapgeopoint的指標物件為空,所以賦值不上去。

使用FMDB進行資料庫操作

fmdb fmdb有三個主要的類 1.fmdatabase 表示乙個單獨的sqlite資料庫。用來執行sqlite的命令。2.fmresultset 表示fmdatabase執行查詢後結果集 3.fmdatabasequeue 如果你想在多執行緒中執行多個查詢或更新,你應該使用該類。這是執行緒安全的...

資料庫操作 使用FMDB

ios中原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb plausibledatabase sqlitepersistentobjects等,fmdb 是一款簡潔 易用的封裝庫,這一篇文章簡單介紹下fmdb的使用...

資料庫操作 使用FMDB

ios中原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb plausibledatabase sqlitepersistentobjects等,fmdb 是一款簡潔 易用的封裝庫,這一篇文章簡單介紹下fmdb的使用...