需求作用: 如果需要保存大量的結構較為復雜的數據時候, 使用數據庫, 例如交規考試項目
常用的數據庫:
(1)Microsoft SQL Server 2000/2008, 中小企業使用較多
(2)Oracle 比較復雜, 大企業使用較多
(3)MySQL數據庫, 網站使用較多
(4)sqlite: 本地數據庫, 訪問數據足夠快, 直接訪問文件
足夠簡單, 功能相對其他數據庫軟件不是特別齊全, 足夠用了
足夠小, 系統不超過1M, 適合在移動端上使用
實例: 使用數據存儲存儲一個班上學生的信息
學號sid 用戶名username 密碼passWord 成績score
1501 zhangsan 123 100
1502 lilei 321 90
1503 wangwu 222 80
(1)創建數據庫
(2)創建數據表
(3)設計數據表(添加多個字段/列)
(4)數據庫常用操作
增,刪,改,查
SQL, Structure Query Language, 結構化查詢語言, 作用就是操作數據庫(創建表, 數據增刪改查)
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))
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操作數據庫
導入文件,
添加二進制庫 libsqlite3.dylib,
包含頭文件#import "FMDatabase.h"
#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
新聞熱點
疑難解答