1.什么是FMDB
FMDB是iOS平臺的SQLite數據庫框架,以OC的方式封裝了SQLite的C語言API。
2.FMDB的優點
a更加面向對象,使用oc進行封裝
b.相比于core data框架,更加簡介
c.比較特殊的 提供了多線程安全的數據庫操作
3.打開數據庫
通過指定SQLite數據庫文件路徑來創建FMDatabase對象
FMDatabase *db = [FMDatabase databaseWithPath:path];
if (![db open]) {
NSLog(@"數據庫打開失敗!");
}
路徑的說明:(本文中使用的是沙盒路徑)
(1)具體文件路徑
如果不存在會自動創建
(2)空字符串@""
會在臨時目錄創建一個空的數據庫
當FMDatabase連接關閉時,數據庫文件也被刪除
(3)nil
會創建一個內存中臨時數據庫,當FMDatabase連接關閉時,數據庫會被銷毀
話不多說直接上代碼
- (void)viewDidLoad {
[super viewDidLoad];
//沙盒路徑
NSString *path =[NSHomeDirectory() stringByAppendingFormat:@"/Documents/user.sql"];
NSLog(@"%@",path);
//創建數據庫
FMDatabase? * db= [FMDatabase databaseWithPath:path];
//打開數據庫
if ([db open]) {
//檢查student表是否創建 id類型主鍵自增長? name 和age不允許為空
NSString *sqlCreateTable =? [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS student (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, address TEXT)"];
BOOL res = [db executeUpdate:sqlCreateTable];
if (res) {
NSLog(@"創建表成功");
}else
{
NSLog(@"創建失敗");
}
}
//關閉數據庫
[db close];
//添加數據
if ([db open]) {
NSString *insertSql1= [NSString stringWithFormat:
@"INSERT INTO student (name, age, address) VALUES ('%@', '%@', '%@')",
@"張三", @"13", @"濟南"];
BOOL res = [db executeUpdate:insertSql1];
NSString *insertSql2 = [NSString stringWithFormat:
@"INSERT INTO student (name, age, address) VALUES ('%@', '%@', '%@')",
@"李四", @"12", @"濟南"];
BOOL res2 = [db executeUpdate:insertSql2];
if (!res) {
NSLog(@"插入數據失敗");
} else {
NSLog(@"插入數據成功");
}
if (!res2) {
NSLog(@"插入數據失敗");
} else {
NSLog(@"插入數據成功");
}
[db close];
}
//修改數據
if ([db open]) {
NSString *updateSql = [NSString stringWithFormat:
@"UPDATE student SET 'age = '%@' WHERE age' = '%@'",
@"15" , @"13"];
BOOL res = [db executeUpdate:updateSql];
if (!res) {
NSLog(@"更新失敗");
} else {
NSLog(@"成功");
}
[db close];
}
//刪除數據
if ([db open]) {
NSString *deleteSql = [NSString stringWithFormat:
@"delete from student where name = '%@'",
@"張三"];
BOOL res = [db executeUpdate:deleteSql];
if (!res) {
NSLog(@"刪除失敗");
} else {
NSLog(@"成功");
}
[db close];
}
//查詢
if ([db open]) {
NSString * sql = [NSString stringWithFormat:
@"SELECT * FROM student"];
FMResultSet * rs = [db executeQuery:sql];
while ([rs next]) {
int Id = [rs intForColumn:@"id"];
NSString * name = [rs stringForColumn:@"name"];
NSString * age = [rs stringForColumn:@"age"];
NSString * address = [rs stringForColumn:@"address"];
NSLog(@"id = %d, name = %@, age = %@? address = %@", Id, name, age, address);
}
[db close];
}
}