需求做用: 若是須要保存大量的結構較爲複雜的數據時候, 使用數據庫, 例如交規考試項目sql
經常使用的數據庫:數據庫
(1)Microsoft SQL Server 2000/2008, 中小企業使用較多設計模式
(2)Oracle 比較複雜, 大企業使用較多網站
(3)Mysql數據庫, 網站使用較多spa
(4)sqlite: 本地數據庫, 訪問數據足夠快, 直接訪問文件設計
足夠簡單, 功能相對其餘數據庫軟件不是特別齊全, 足夠用了code
足夠小, 系統不超過1M, 適合在移動端上使用orm
實例: 使用數據存儲存儲一個班上學生的信息sqlite
學號sid 用戶名username 密碼password 成績score對象
1501 zhangsan 123 100
1502 lilei 321 90
1503 wangwu 222 80
(1)建立數據庫
(2)建立數據表
(3)設計數據表(添加多個字段/列)
(4)數據庫經常使用操做
增,刪,改,查
SQL, Structure Query Language, 結構化查詢語言, 做用就是操做數據庫(建立表, 數據增刪改查)
(1)建立數據表
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(1501,'zhangsan','211','80')
(3)查詢數據
<1>查詢表格中全部數據
select * from StudentInfo;
<2>查詢指定的字段
實例: 查詢全部名字username
select username from StudentInfo
<3>根據指定的條件進行查詢
實例: 查找name爲zhansan的全部信息
select * from StudentInfo where username='zhangsan'
<4>根據多個條件進行查詢
實例: 查找username爲zhansan, 而且password爲123的全部信息
select * from StudentInfo where username='zhangsan' and password='123'
<5>查詢後須要排序
a.根據score升序排列
select * from StudentInfo order by score
b.根據score降序
排序
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'
配置
導入FMDB文件,
添加二進制庫 libsqlite3.dylib,
包含頭文件#import "FMDatabase.h"
#import "ViewController.h" #import "FMDatabase.h" @interface ViewController (){ //建立數據庫對象 FMDatabase *_database; } @end
//1.建立數據庫 -(void)createAndInitDatabase { //設置路徑 NSString *path=[NSString stringWithFormat:@"%@/Documents/stuInfo.sqlite",NSHomeDirectory()]; //建立數據庫(若是不存在則建立打開,若是存在則直接打開) _database=[[FMDatabase alloc] initWithPath:path]; if (!_database.open) { NSLog(@"打開失敗"); return; } NSLog(@"打開成功"); }
//2.建立數據表 -(void)createTable { NSString *sql=@"create table if not exists StudentInfo(sid integer," "username varchar(20)," "password varchar(20)," "score varchar(20))"; //executeQuery用來執行select語句 //其餘語句使用executeUpdate BOOL b=[_database executeUpdate:sql]; NSLog(@"----b=%d",b); }
//3.插入數據 -(void)insertData { int sid=1502; NSString *username=@"lisi"; NSString *password=@"231"; NSString *score=@"90"; NSString *sql=@"insert into StudentInfo(sid,username,password,score) values(?,?,?,?)"; //注意:?對應的每個參數都應該是字符串,其餘類型轉化爲字符串 BOOL b=[_database executeUpdate:sql,[NSString stringWithFormat:@"%d",sid],username,password,score ]; NSLog(@"=======b=%d",b); }
//4.查詢數據 -(void)queryData { //顯示全部人得信息 NSString *sql=@"select * from StudentInfo"; //FMResultSet 表示查詢後結果集 FMResultSet *resultSet=[_database executeQuery:sql]; //next方法每次獲取一條記錄,獲取不到的返回nil while ([resultSet next]) { NSLog(@"sid = %@,name =%@,pass =%@,score =%@",[resultSet stringForColumn:@"sid"],[resultSet stringForColumn:@"username"],[resultSet stringForColumn:@"password"],[resultSet stringForColumn:@"score"]); } }
//5.修改數據 -(void)setData { NSString *username=@"lisi"; NSString *score=@"70"; NSString *sql=@"update StudentInfo set score='60' where username='lisi';"; BOOL b=[_database executeUpdate:sql,username,score ]; NSLog(@"++++++b=%d",b); }
//6.刪除數據 -(void)deleteData { NSString *sid=@"1501"; NSString *sql=@"delete from StudentInfo where sid='1501'"; BOOL b=[_database executeUpdate:sql,sid]; NSLog(@"*******b=%d",b); }
1.首先導入FMDB文件和data.sqlite
2.添加二進制庫 libsqlite3.dylib,包含頭文件#import "FMDatabase.h"
3.建立一個FirstLevelModel模型,在FirstLevelModel.h裏面本身定義屬性,導入單例
#import <Foundation/Foundation.h> #import "FirstLevelModel.h" @interface DatabaseManager : NSObject //獲取單例對象 +(id)sharedInstance; //獲取第一級目錄 -(NSArray *)firstLevels;
#import "DatabaseManager.h" #import "FMDatabase.h" @interface DatabaseManager() { FMDatabase *_database; } @end @implementation DatabaseManager //獲取單例對象 +(id)sharedInstance { static DatabaseManager *dc=nil; if(dc==nil) { dc=[[[self class] 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 *marr=[[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"]; [marr addObject:model]; } return marr; }
本身作了一個簡單「交通考試」的實例
效果圖:
實現代碼:點我下載