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;