1、首先要在項(xiàng)目中導(dǎo)入FMDB,具體方法可在github上查看https://github.com/ccgus/fmdb
2、注意事項(xiàng):
(1)數(shù)據(jù)庫的語法在Xcode里面沒有提示,所以我們不能寫錯(cuò)一個(gè)單詞,要不然數(shù)據(jù)庫就會(huì)報(bào)錯(cuò)?。?!
(2)對(duì)數(shù)據(jù)庫進(jìn)行操作時(shí)都要先打開數(shù)據(jù)庫,操作完畢后一定要關(guān)上數(shù)據(jù)庫?。?!
3、繼承NSObject建一個(gè)類,這里我們?nèi)∶麨镈BManager
4、在.m文件里導(dǎo)入頭文件#import <FMDatabase.h>
5、定義一個(gè)成員變量 FMDatabase *_dataBase;
6、創(chuàng)建一個(gè)單例
+ (DBManager *)sharedManager {
static DBManager *manager = nil;
static dispatch_once_t onceTpken;
dispatch_once(&onceTpken, ^{
manager = [[DBManager alloc]init];
});
return manager;
}
7、創(chuàng)建數(shù)據(jù)庫表
- (void)createSingleDataBase {
NSString *singlePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches/single.sqlite3"];
_dataBase = [[FMDatabase alloc] initWithPath:singlePath];
BOOL ret = [_dataBase open];//打開數(shù)據(jù)庫
if (ret)
{
//kSingleId為唯一標(biāo)識(shí),設(shè)置成自動(dòng)增加,后面的參數(shù)要跟model里的實(shí)例變量對(duì)應(yīng)
//NSString類型 varchar(255)
//image 類型 blob
//int 類型 integer
NSString *singleSql = @"create table if not exists mySingle (kSingleId integer primary key autoincrement, CommentCount integer, HeadImg varchar(255), Memo varchar(255), NickName varchar(255), PublicStatus integer, SingleId integer, SingleName varchar(255), TypeId integer, TypeName varchar(255), UserId integer)";
BOOL flag1 = [_dataBase executeUpdate:singleSql];
if (!flag1)
{
NSLog(@"%@",_dataBase.lastErrorMessage);
}
}
else
NSLog(@"打開數(shù)據(jù)庫失敗");
[_dataBase close];//關(guān)閉數(shù)據(jù)庫
}
8、在數(shù)據(jù)庫里增加數(shù)據(jù)
//增加多條數(shù)據(jù)
- (void)addSingleModel:(NSMutableArray *)modelArray {
BOOL ret = [_dataBase open];//打開數(shù)據(jù)庫
if (ret)
{
NSString *sql=@"";
for (SingleListModel* model in modelArray) {
//數(shù)據(jù)庫插入語句,into后面的表名和我們剛才創(chuàng)建的表名要一樣?。?!
sql = @"insert into mySingle (CommentCount, HeadImg, Memo, NickName, PublicStatus, SingleId, SingleName, TypeId, TypeName, UserId) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
//插入數(shù)據(jù),更新數(shù)據(jù)庫
BOOL flag = [_dataBase executeUpdate:sql,model.CommentCount,model.HeadImg,model.Memo,model.NickName,model.PublicStatus,model.SingleId,model.SingleName,model.TypeId,model.TypeName,model.UserId ?: [NSNull null]];
if (!flag) {
NSLog(@"%@",_dataBase.lastErrorMessage);
}
}
}
[_dataBase close];//關(guān)閉數(shù)據(jù)庫
}```
//插入單條數(shù)據(jù)
-
(void)addSearchModel:(NSString *)Memo {
BOOL ret = [_dataBase open];
NSString *sql = @"";
if (ret)
{
sql = @"insert into mySingle (Memo) values (?)";
BOOL flag = [_dataBase executeUpdate:sql,Memo];
if (!flag)
{
NSLog(@"%@",_dataBase.lastErrorMessage);
}
}
[_dataBase close];
}
9、查詢數(shù)據(jù)庫
-
(NSArray *)searchAllSingleData {
BOOL ret = [_dataBase open];
NSMutableArray *array = [NSMutableArray array];
if(ret)
{
NSString *sql = @"select * from mySingle";
FMResultSet *rs = [_dataBase executeQuery:sql];
while ([rs next])
{
SingleListModel *model = [[SingleListModel alloc] init];
model.CommentCount = [rs stringForColumn:@"CommentCount"];
model.HeadImg = [rs stringForColumn:@"HeadImg"];
model.Memo = [rs stringForColumn:@"Memo"];
model.NickName =[rs stringForColumn:@"NickName"];
model.PublicStatus = [rs stringForColumn:@"PublicStatus"];
model.SingleId = [rs stringForColumn:@"SingleId"];
model.SingleName = [rs stringForColumn:@"SingleName"];
model.TypeId = [rs stringForColumn:@"TypeId"];
model.TypeName = [rs stringForColumn:@"TypeName"];
model.UserId = [rs stringForColumn:@"UserId"];[array addObject:model]; }}
[_dataBase close];
return array;
}```
10、刪除數(shù)據(jù)
//刪除所有數(shù)據(jù)
- (void)deleteAllSingle {
[_dataBase executeUpdate:@"DELETE FROM mySingle"];
[_dataBase executeUpdate:@"UPDATE sqlite_sequence set seq=0 where name='mySingle'"];
}```
//刪除單條數(shù)據(jù)
-
(void)deleteOneSearch:(NSString *)Memo {
BOOL ret = [_dataBase open];
if(ret) {BOOL flag = [_dataBase executeUpdateWithFormat:@"delete from mySingle where Memo = %@",Memo]; if (!flag) { NSLog(@"==%@",_dataBase.lastErrorMessage); }}
[_dataBase close];
}
11、修改數(shù)據(jù)庫的數(shù)據(jù)
-(void)updateUserModel:(SingleListModel *)model kSingleId:(int) kSingleId
{
BOOL ret = [_dataBase open];
if(ret) {
NSString *sql = @"update mySingle set Memo = ?, NickName = ?, HeadImg = ? where kSingleId = ?";
//將圖片轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)
NSData *data = UIImagePNGRepresentation(model. HeadImg);
BOOL ret = [_dataBase executeUpdate:sql,model.Memo,model.NickName,data,@(kSingleId)];
if (!ret)
{
NSLog(@"%@",_dataBase.lastErrorMessage);
}
}
[_dataBase close];
}
以上就是數(shù)據(jù)庫的增刪改查的基本操作啦,記住數(shù)據(jù)庫打開,一定要關(guān)閉!?。?