#pragma mark - FMDB 操作数据库
1.初始化一个数据库对象,关联路径,如果路径下的数据库不存在,open方法调用时会自动创建对应的数据库,若存在,打开当前路径下的数据库。
注:一个数据库对象只能操作一个数据库文件
DB_PATH :要创建或打开的数据库的路径
// 创建并打开数据库
- (void) createDatabase
{
// 一个数据库对象只能操作一个数据库文件,关联路径
_database = [[FMDatabase alloc] initWithPath:DB_PATH];
// 打开数据库,如果没有就创建
BOOL ret = [_database open];
if (ret) {
NSLog(@"数据库创建成功");
}else{
NSLog(@"路径错误");
}
}
2.SQL语句操作,FMDatabase 执行语句有两种执行方式,
[_database executeUpdate:sql,…]和[_database executeQuery:sql]
第一种是除查询意外的语句操作,那么第二种你懂得,返回值是一个BOOL变量,
// 创建表单
- (void) createTable
{
// 写sql语句
// sql不区分大小写,为了和字段和值区分,一般大写
NSString * sql = @"CREATE TABLE 女演员(ID INTEGER PRIMARY KEY AUTOINCREMENT, 姓名 CHAR(128), 国籍 CHAR(128), 生日 DATE)";
// 通过fmdb调用sql语句,调用sql语句
BOOL ret = [_database executeUpdate:sql];
if (ret) {
NSLog(@"表达创建成功");
}else{
NSLog(@"sql创建表单错误");
}
}
3.executeUpdate方法执行 SQL语句的两种方式
// 插入记录
- (void) insertRecord
{
#if 0
// 方法1
NSString * sql = @"INSERT INTO 女演员(姓名,国籍) VALUES ('舒淇', '中国香港')";
BOOL ret = [_database executeUpdate:sql];
#else
NSString * sql = @"INSERT INTO 女演员(姓名,国籍,生日) VALUES (?, ?, ?)";
BOOL ret = [_database executeUpdate:sql, @"舒淇",@"中国香港",@"92-7-7"];
#endif
if (ret) {
NSLog(@"纪录添加成功");
}else{
NSLog(@"纪录添加失败");
}
}
// 查找记录
- (void) selectRecords
{
NSString * sql = @"SELECT * FROM 女演员";
// 返回值是一个结果集
FMResultSet * rs = [_database executeQuery:sql];
while (rs.next) {
NSLog(@"%d %@ %@ %@",[set intForColumn:@"ID"], [set stringForColumn:@"姓名"], [set stringForColumn:@"国籍"], [set stringForColumn:@"生日"]);
}
}
4.操作完数据库一定要关闭数据库
// 关闭文件
- (void) closeDatabase
{
[_database close];
}