#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];
}