iOS開發之資料庫FMDB,ios開發fmdb

來源:互聯網
上載者:User

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

點擊下載代碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.