第一種: 乙個資料庫中,同時儲存多張資料表(此處舉例為兩張表)
.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的使用...