我是FMDB,我可以操作SQLite資料庫,幫您保存資料。
第1步:建立一個名為"FMDB_SQLite"的"Single View Application"專案。
第2步:加入libsqlite3.0.dylib函數庫
- iOS此提供操作SQLite的函數庫,需加入
- 選取專案
- 選取TARGETS的FMDB_SQLite專案
- 選Build Phases
- 選Link Binary with Libraries
- 並點選"+"號
- 搜尋sqlite3.0
- 選取libsqlite3.0.dylib後點選"Add"
第3步:下載並加入FMDB套件
- 點選此網址下載:https://github.com/ccgus/fmdb/archive/master.zip
- 解壓後,加入src\fmdb底下的所有檔案
第4步:引用FMDatabase.h
- 於ViewController.m檔中透過#import引用FBDatabase.h檔
#import "FMDatabase.h"
第5步:開啟並建立資料庫
- 於ViewController.m檔中建立getFMDatabase方法,此方法會回傳getFMDatabase物件
- 透過傳送databaseWithPath訊息給FMDatabase類別,以指向特定路徑的SQLite資料庫檔
- 接著透過open訊息實際開啟資料庫
ViewController.m
//取得FMDatabase資料庫物件
-(FMDatabase*)getFMDatabase{
//取得可讀寫的Document路徑,
//並指向MyDatabase.db資料庫檔案。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"MyDatabase.db"];
//透過傳遞databaseWithPath訊息給FMDatabase ,
FMDatabase *db = [FMDatabase databaseWithPath:dbPath];
//傳遞open訊息開啟資料庫
//開啟MyDatabase.db資料庫,
//若MyDatabase.db檔案不存在,
//則會自動建立MyDatabase.db檔案,
//而後回傳取得FMDatabase物件
if ([db open] == YES)
{
//開啟成功回傳FMDatabase物件
return db;
}
else
{
//開啟失敗回傳nil
return nil;
}
}
第6步:建立資料表
- 建立"Create Table"按鈕,連接IBAction - createTable
- 於createTable方法中透過傳送executeUpdate訊息,執行CREATE TABLE指令,以建立Users資料表
//建立資料表
- (IBAction)createTable:(id)sender {
//透過getFMDatabase訊息取得FMDatabase物件
FMDatabase *db = [self getFMDatabase];
//執行CREATE TABLE指令,
//建立Users資料表,
//其中包含id、Name、Age、Gender欄位,
//而id設定為主鍵,資料型別會預設為Integer,
//SQLite資料庫預設會自動進行流水號編號,
//Name的型別為text,
//Age的型別為integer,
//Gender的型別為integer
[db executeUpdate:@"CREATE TABLE Users (id integer primary key autoincrement, Name text, Age integer, Gender integer)"];
}
- 建立"Insert Data"按鈕,連接IBAction - insertData
- 於insertData方法中透過傳送executeUpdate訊息,執行INSERT INTO令,以建立User資料
//插入資料
- (IBAction)insertData:(id)sender {
//透過getFMDatabase訊息取得FMDatabase物件
FMDatabase *db = [self getFMDatabase];
//執行INSERT INTO指令,
//寫入一筆資料至Users表格中
[db executeUpdate:@"INSERT INTO Users (Name, Age, Gender) VALUES (?,?,?)",
@"Jone", [NSNumber numberWithInt:20], [NSNumber numberWithInt:0]];
}
第8步:查詢資料
- 建立"Select Data"按鈕,連接IBAction - selectData
- 於insertData方法中透過傳送executeUpdate訊息,執行SELECT指令,以查詢User資料
- 執行後取得的FMResultSet物件,即可透過next依序取得查詢後的每一筆資料
//查詢資料
- (IBAction)selectData:(id)sender {
//透過getFMDatabase訊息取得FMDatabase物件
FMDatabase *db = [self getFMDatabase];
NSLog(@"xxxx");
//執行SELECT指令,
//選取所有資料
FMResultSet *rs = [db executeQuery:@"SELECT Name, Age, Gender FROM Users"];
//回傳的FMResultSet物件,
//可透過next指向下一筆資料,
//若有下一筆資料,
//則next訊息會回傳YES
while ([rs next]) {
NSString *name = [rs stringForColumn:@"Name"];
int age = [rs intForColumn:@"Age"];
NSLog(@"name:%@, age:%d", name, age);
NSString * str = [NSString stringWithFormat:@"name:%@, age:%d", name, age];
UIAlertView * alert =[[UIAlertView alloc] initWithTitle:nil
message:str
delegate:nil
cancelButtonTitle:@"Close"
otherButtonTitles:nil];
[alert show];
}
//傳送close訊息,
//關閉讀取存耶的作業
[rs close];
}
第9步:執行
- 若先按Create Table按鈕,以建立Users資料表
- 接著按下Insert Data按鈕,建立User資料
- 在按下Select Data按鈕,查詢資料
檔案連結:FMBD_SQLite.zip
篩選資料,WHERE子句:
- SELECT指令可查詢資料表的資料,若要查詢特定的資料,可透過WHERE子句完成,比如:
- 查詢id為1的資料,SELECT * FROM Users HWERE id=1
- 查詢Name為Jone的資料,SELECT * FROM Users HWERE Jone='Jone'
修改資料與刪除資料:
- 修改資料可使用UPDATE指令,搭配WHERE子句,可更新符合條件的資料,比如:
- 更新id為1的資料,UPDATE Users SET Name='KH' WHERE id=1
- 刪除資料可使用DELETE指令,搭配WHERE子句,可刪除符合條件的資料
- 更新id為1的資料,DELETE Users WHERE id=1
更多SQLite資訊:
更多的FMDB資訊: