FMDB的介紹

FMDB方法的介紹

 

1.首先咱們須要建立一個FMDatabase實例:sql

+(FMDatabase*)DataBaseSigonInstance數據庫

{spa

    //數據庫初始化日誌

    NSString *homeDir =NSHomeDirectory();對象

    //NSLog(@"%@",homeDir);圖片

NSString *dbPath = [homeDirstringByAppendingPathComponent:@"Library/Caches/FMDatabaseDemo.db"];string

    FMDatabase *database = [FMDatabasedatabaseWithPath:dbPath];it

    

   return database;io

}table

 

2.接下來就是須要建立一個數據表了:

//打開數據庫

    FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

    

   if (!db.open)

    {

        NSLog(@"fail to open database");

        

       return;

    }

    db.logsErrors =YES;//開啓錯誤日誌

    [db executeUpdate:@"CREATE TABLE IF NOT EXISTS studentTable(name varchar,age integer,totalScore float)"];

    [dbclose];

3.添加數據:

FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

       if (!db.open)

        {

            NSLog(@"fail to open database");

            

           return;

        }      

       //得到數據

        student.name = ((UITextField*)[alertViewviewWithTag:TEXTFIELD_TAG]).text;

        student.age = [((UITextField*)[alertViewviewWithTag:TEXTFIELD_TAG + 1]).textintValue];

        student.totalScore = [((UITextField*)[alertViewviewWithTag:TEXTFIELD_TAG + 2]).textfloatValue];       

        db.logsErrors =YES;

        [db executeUpdate:@"insert into studentTable(name,age,totalScore)values(?,?,?)",student.name,[NSNumbernumberWithInt:student.age],[NSNumbernumberWithFloat:student.totalScore]];//注意參數必須是對象

        [dbclose];

4.刪除數據:

    FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

   if (!db.open)

    {

        NSLog(@"fail to open!");

       return;

    }

    db.logsErrors =YES;

    NSString *delDataSqlStr =@"delete from studentTable";

    [dbexecuteUpdate:delDataSqlStr];

    [dbclose];

 

5.修改數據:

 FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

   if (!db.open)

    {

        NSLog(@"fail to open!");

       return;

    }

    db.logsErrors =YES;

    [db executeUpdate:@"update studentTable set totalScore = 100"];

    [dbclose];

查詢數據:

 FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

   if (!db.open)

    {

        NSLog(@"fail to open!");

       return;

    }

    db.logsErrors =YES;

    FMResultSet *rs = [dbexecuteQuery:@"select * from studentTable"];

     NSMutableArray *studentArr = [[NSMutableArrayalloc]init];

       while ([rsnext])

    {

        NSMutableDictionary *dic = [[NSMutableDictionaryalloc]init];

        

        [dic setValue:[rsstringForColumn:@"name"]forKey:@"name"];

        [dic setValue:[NSNumbernumberWithInt:[rsintForColumn:@"age"]]forKey:@"age"];

        [dic setValue:[NSNumbernumberWithDouble:[rsdoubleForColumn:@"totalScore"]]forKey:@"totalScore"];  

        [studentArraddObject:dic];

        [dicrelease];

       }

    

   for (int count = 0; count< [studentArrcount]; count++)

    {

       NSLog(@"sudent:%@  age:%@  totalScore:%@",[[studentArrobjectAtIndex:count]objectForKey:@"name"],[[studentArrobjectAtIndex:count]objectForKey:@"age"],[[studentArrobjectAtIndex:count]objectForKey:@"totalScore"]);

    }

    

    [studentArrrelease];

    

    [dbclose];

 

 

上面的都是一些增刪改查的用法

 

下面咱們再來看看FMDatabase 和 FMResultSet

 

FMDatabase:(主要用到這兩個)

- (BOOL)executeUpdate:(NSString*)sql, ...;   這個是用於執行無結果的sql語句的

 

- (FMResultSet *)executeQuery:(NSString*)sql, ...;  這個是用於執行有結果的sql語句的

 

FMResultSet:

 

- (BOOL)next; 結果集的下一個

 

- (int)columnCount; 結果集的字段個數

 

- (int)intForColumn:(NSString*)columnName; 獲取整形字段的信息(下面的都是同理)

- (int)intForColumnIndex:(int)columnIdx;

 

- (long)longForColumn:(NSString*)columnName;

- (long)longForColumnIndex:(int)columnIdx;

 

- (longlongint)longLongIntForColumn:(NSString*)columnName;

- (longlongint)longLongIntForColumnIndex:(int)columnIdx;

 

- (unsignedlonglong int)unsignedLongLongIntForColumn:(NSString*)columnName;

- (unsignedlonglong int)unsignedLongLongIntForColumnIndex:(int)columnIdx;

 

- (BOOL)boolForColumn:(NSString*)columnName;

- (BOOL)boolForColumnIndex:(int)columnIdx;

 

- (double)doubleForColumn:(NSString*)columnName;

- (double)doubleForColumnIndex:(int)columnIdx;

 

- (NSString*)stringForColumn:(NSString*)columnName;

- (NSString*)stringForColumnIndex:(int)columnIdx;

 

- (NSDate*)dateForColumn:(NSString*)columnName;

- (NSDate*)dateForColumnIndex:(int)columnIdx;

 

- (NSData*)dataForColumn:(NSString*)columnName; 獲取二進制數據(圖片能夠使用這個)

- (NSData*)dataForColumnIndex:(int)columnIdx;