基本介紹
SQLite (http://www.sqlite.org/docs.html) 是一個輕量級的關(guān)系數(shù)據(jù)庫涡驮。原生的SQLite API在使用上相當(dāng)不友好魄缚,在使用時宝与,非常不便焚廊。于是,開源社區(qū)中就出現(xiàn)了一系列將SQLite API進(jìn)行封裝的庫习劫,而FMDB (https://github.com/ccgus/fmdb) 則是開源社區(qū)中的優(yōu)秀者咆瘟。手動導(dǎo)入FMDB需添加靜態(tài)依賴libsqlite3.tbd。
1.設(shè)置保持路徑诽里,創(chuàng)建FMDB對象
NSString * path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString * pathStr = [path stringByAppendingString:@"/test1.sqlite"];
_db = [FMDatabase databaseWithPath:pathStr];
if (![_db open]) {
NSLog(@"打開失敗");
return;
}
NSLog(@"打開成功");
2.創(chuàng)建表單
NSString * sqlStr = @"CREATE TABLE IF NOT EXISTS searchRecord(id integer PRIMARY KEY AUTOINCREMENT,name text NOT NULL,age integer DEFAULT 20,sex text DEFAULT '女');";
if ([_db executeStatements:sqlStr]) {
NSLog(@"創(chuàng)建表成功");
}else{
NSLog(@"創(chuàng)建表失敗");
}
3.插入數(shù)據(jù)
NSString * sqlStr = @"INSERT INTO searchRecord(name,sex,age) VALUES('小紅','女',18);";
if ([_db executeUpdate:sqlStr]) {
NSLog(@"插入成功");
}else{
NSLog(@"插入失敗");
}
4. 查詢數(shù)據(jù)
NSString * sqlStr = @"SELECT * FROM searchRecord;";
NSArray * array = @[];
FMResultSet *s =[_db executeQuery:sqlStr withArgumentsInArray:array];
while ([s next]) {
NSString * name = [s objectForColumnName:@"name"];
NSInteger age = [s intForColumn:@"age"];
NSString * sex = [s objectForColumnName:@"sex"];
NSLog(@"%@", name );
NSLog(@"%ld", (long)age);
NSLog(@"%@", sex);
}
5.刪除數(shù)據(jù)
NSString * sqlStr = @"DELETE FROM searchRecord;";
if ([_db executeUpdate:sqlStr]) {
NSLog(@"刪除成功");
}else{
NSLog(@"刪除失敗");
}
6.修改數(shù)據(jù)
NSString * sqlStr = @"UPDATE searchRecord SET age=20 WHERE age=18;";
if ([_db executeUpdate:sqlStr]) {
NSLog(@"修改成功");
}else{
NSLog(@"修改失敗");
}
7.FMDB線程安全
這里就不做過多介紹可以參考博客http://blog.csdn.net/kingkong1024/article/details/7744285