iOS開發之資料庫FMDB,ios開發fmdb
iOS開發之資料庫FMDB 1.簡介
需求作用: 如果需要儲存大量的結構較為複雜的資料時候, 使用資料庫, 例如交規考試項目
常用的資料庫:
(1)Microsoft SQL Server 2000/2008, 中小企業使用較多
(2)Oracle 比較複雜, 大企業使用較多
(3)Mysql資料庫, 網站使用較多
(4)sqlite: 本機資料庫, 訪問資料足夠快, 直接存取檔案
足夠簡單, 功能相對其他資料庫軟體不是特別齊全, 足夠用了
足夠小, 系統不超過1M, 適合在移動端上使用
2. MesaSQlite
使用
執行個體: 使用資料存放區儲存一個班上學生的資訊
學號sid 使用者名稱username 密碼password 成績score
1501 zhangsan 123 100
1502 lilei 321 90
1503 wangwu 222 80
(1)建立資料庫
(2)建立資料表
(3)設計資料表(添加多個欄位/列)
(4)資料庫常用操作
增,刪,改,查
3. SQL
結構化查詢語句
SQL, Structure Query Language, 結構化查詢語言 (SQL), 作用就是操作資料庫(建立表, 資料增刪改查)
(1)建立資料表
create table StudentInfo(sid integer, username varchar(20), password varchar(20),score varchar(20)) create table if not exists StudentInfo(sid integer, username varchar(20), password varchar(20),score varchar(20))
(2)插入資料
insert into StudentInfo(sid,username,password,score) values(1503,'wangwu','222','80')
(3)查詢資料
<1>查詢表格中所有資料
select * from StudentInfo;
<2>查詢指定的欄位
執行個體: 查詢所有名字username
select username from StudentInfo
<3>根據指定的條件進行查詢
執行個體: 尋找name為zhansan的所有資訊
select * from StudentInfo where username='zhangsan'
<4>根據多個條件進行查詢
執行個體: 尋找uname為zhansan, 並且性別為boy的所有資訊
select * from StudentInfo where username='zhangsan' and password='123'
<5>查詢後需要排序
//根據age升序排列select * from StudentInfo order by score //根據age降序排列select * from StudentInfo order by score desc
<6>擷取資料行數
select count(*) from StudentInfo
(4)修改資料
update StudentInfo set score='100' where username='zhangsan';
(5)刪除資料
delete from StudentInfo where sid='1503'
4. FMDB操作資料庫
(1)配置
匯入檔案,
添加二進位庫 libsqlite3.dylib,
包含標頭檔#import "FMDatabase.h"
5.
資料庫在項目中使用
-
單例設計模式
(1)單例的聲明與實現
#import <Foundation/Foundation.h>#import "FirstLevelModel.h"#import "SecondLevelModel.h"#import "LeafLevelModel.h"@interface DatabaseManager : NSObject//擷取單例對象方法+(id)shareINstance;//擷取第一級目錄-(NSArray *)firstLevels;//擷取第二級目錄-(NSArray *)secondLevels:(NSString *)str;//擷取第三級目錄-(NSArray *)leafLevels:(NSString *)str;@end
#import "DatabaseManager.h"#import "FMDatabase.h"@interface DatabaseManager(){ FMDatabase *_database;}@end@implementation DatabaseManager//擷取單例對象方法+(id)shareINstance{ static DatabaseManager *dc = nil; if (dc==nil) { dc = [[DatabaseManager alloc] init]; } return dc;}- (id)init{ if (self = [super init]) { [self openDatabase]; } return self;}- (void)openDatabase{ NSString *path = [[NSBundle mainBundle] pathForResource:@"data.sqlite" ofType:nil]; _database = [[FMDatabase alloc] initWithPath:path]; if (!_database.open) { NSLog(@"開啟失敗"); }}//擷取第一級目錄- (NSArray *)firstLevels{ NSString *sql = @"select * from firstlevel"; FMResultSet *resultSet = [_database executeQuery:sql]; NSMutableArray *muArr = [[NSMutableArray alloc] init]; while ([resultSet next]) { // FirstLevelModel *model = [[FirstLevelModel alloc] init]; model.pid = [resultSet stringForColumn:@"pid"]; model.pname = [resultSet stringForColumn:@"pname"]; model.pcount = [resultSet stringForColumn:@"pcount"]; [muArr addObject:model]; } return muArr;}//擷取第二級目錄-(NSArray *)secondLevels:(NSString *)str{ NSString *sql = @"select * from secondlevel where pid=?"; FMResultSet *resultSet = [_database executeQuery:sql,str]; NSMutableArray *muArr = [[NSMutableArray alloc] init]; while ([resultSet next]) { // SecondLevelModel *model = [[SecondLevelModel alloc] init]; model.pid = [resultSet stringForColumn:@"pid"]; model.sid = [resultSet stringForColumn:@"sid"]; model.sname = [resultSet stringForColumn:@"sname"]; model.scount = [resultSet stringForColumn:@"scount"]; [muArr addObject:model]; } return muArr;}//擷取第三級目錄-(NSArray *)leafLevels:(NSString *)str{ NSString *sql = @"select * from leaflevel where sid=?"; FMResultSet *resultSet = [_database executeQuery:sql,str]; NSMutableArray *muArr = [[NSMutableArray alloc] init]; while ([resultSet next]) { // LeafLevelModel *model = [[LeafLevelModel alloc] init]; model.pid = [resultSet stringForColumn:@"pid"]; model.sid = [resultSet stringForColumn:@"sid"]; model.sname = [resultSet stringForColumn:@"sname"]; model.pname = [resultSet stringForColumn:@"pname"]; model.mquestion = [resultSet stringForColumn:@"mquestion"]; model.mdesc = [resultSet stringForColumn:@"mdesc"]; model.mid = [resultSet stringForColumn:@"mid"]; model.manswer = [resultSet stringForColumn:@"manswer"]; model.munknow = [resultSet stringForColumn:@"munknow"]; model.mtype = [resultSet stringForColumn:@"mtype"]; model.mimage = [resultSet stringForColumn:@"mimage"]; [muArr addObject:model]; } return muArr;}@end
點擊下載代碼