数据库FMDB
使用FMDB第三方框架:
在Xcode工程中导入FMDB框架,然后添加系统依赖库libsqlite3.dylib
1.创建数据库
//定义数据库操作对象
FMDatabase *_database;
#pragma mark - 数据库路径
- (NSString *)getDatabasePath
{
#if 0
//获取Documents文件夹目录:方式一
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
#endif
//获取Documents文件夹目录:方式二
NSString *path = NSHomeDirectory();
path = [path stringByAppendingPathComponent:@"Documents"];
//获取数据库文件User.db的目录
path = [path stringByAppendingPathComponent:@"User.db"];
NSLog(@"path:%@", path);
return path;
}
#pragma mark - 创建数据库
- (void)createDatabase
{
//创建数据库操作对象
_database = [FMDatabase databaseWithPath:[self getDatabasePath]];
//打开数据库,如果数据库不存在则先创建数据库文件再打开,否则直接打开
BOOL ret = [_database open];
if (ret) {
NSLog(@"打开成功!");
}
else {
NSLog(@"打开失败!");
}
}
2.创建表
#pragma mark - 创建表
- (void)createTable
{
/*
User 表
(
Id integer primary key autoincrement,
name text,
age integer
)
*/
NSString *sql = @"create table if not exists User(Id integer primary key autoincrement, name text, age integer)";
//执行sql语句
BOOL ret = [_database executeUpdate:sql];
if (ret) {
NSLog(@"创建表成功!");
}
else {
NSLog(@"创建表失败!");
}
}
3.插入数据,查询,更新,删除
3.1、 插入数据
//sql语句
NSString *sql = @"insert into User(name, age) values(?,?)";
BOOL ret = YES;
for (int i=0; i<10; i++) {
NSString *name = [NSString stringWithFormat:@"user%d", i+1];
NSNumber *age = [NSNumber numberWithInt:i+10];
//执行sql语句
//只能插入三种OC对象的数据: NSString, NSNumber, NSData
ret &= [_database executeUpdate:sql, name, age];
}
if ( ret ) {
NSLog(@"插入数据成功!");
}
else {
NSLog(@"插入数据失败!");
}
3.2、 查询数据
//查询所有数据
NSString *sql = @"select * from User";
//执行查询,返回一个集合(无重复元素的数组)
FMResultSet *set = [_database executeQuery:sql];
//遍历集合
while ( [set next] ) {
NSString *name = [set stringForColumn:@"name"];
int age = [set intForColumn:@"age"];
NSLog(@"name:%@, age:%d", name, age);
}
3.3、 更新数据
//sql语句
NSString *sql = @"update User set name=? where name=?";
//执行sql语句
BOOL ret = [_database executeUpdate:sql, newName, oldName];
if ( ret ) {
NSLog(@"更新数据成功!");
}
else {
NSLog(@"更新数据失败!");
}
3.4、 删除数据
NSString *sql = @"delete from User where name=?";
BOOL ret = [_database executeUpdate:sql, name];
if ( ret ) {
NSLog(@"删除数据成功!");
}
else {
NSLog(@"删除数据失败!");
}
4.关闭数据库
[_database close];