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