iOS中的数据存储(FMDB)
Tips:刚学习完markdown,来试试效果,妥妥的,哈哈。
FMDB
1.是什么
FMDB是用OC的方式封装了SQLite的C语言API。
2.有什么用
使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码
比起Core Data框架,FMDB更加轻量级和灵活
提供了多线程安全的数据库操作方法,有效地防止数据混乱
3.怎么用
首先在工程里导入libsqlite3框架,并使用cocoapods或手动添加FMDB框架(FMDB)。
FMDB使用前也要打开一个数据库,这个数据库文件存在则直接打开,不存在则会
创建并打开。这里FMDB引入了一个FMDatabase对象来表示数据库,打开数据库
和后面的数据库操作全部依赖此对象。
下面是打开数据库获得FMDatabase对象的代码
<pre><code>
-(void)openDb:(NSString *)dbname{
//取得数据库保存路径,通常保存沙盒Documents目录
NSString *directory=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *filePath=[directory stringByAppendingPathComponent:dbname];
//创建FMDatabase对象
self.db=[FMDatabase databaseWithPath:filePath];
//创建打开数据库
if ([self.db open]){
NSLog(@"数据库打开成功!");
//这里可以同时创建表
BOOL result=[db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);"];
}else{
NSLog(@"数据库打开失败!");
}
}
</code></pre>
然后是增
-(void)insert
{
for (int i = 0; i<10; i++) {
NSString *name = [NSString stringWithFormat:@"jack-%d", arc4random_uniform(100)];
// executeUpdate : 不确定的参数用?来占位
[self.db executeUpdate:@"INSERT INTO t_student (name, age) VALUES (?, ?);", name, @(arc4random_uniform(40))];
}
}
删
<pre><code>
-(void)delete
{
// [self.db executeUpdate:@"DELETE FROM t_student;"];
[self.db executeUpdate:@"DROP TABLE IF EXISTS t_student;"];
[self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);"];
}
</code></pre>
查
<pre><code>
-
(void)query
{
// 1.执行查询语句
FMResultSet *resultSet = [self.db executeQuery:@"SELECT * FROM t_student"];// 2.遍历结果
while ([resultSet next]) {
int ID = [resultSet intForColumn:@"id"];
NSString *name = [resultSet stringForColumn:@"name"];
int age = [resultSet intForColumn:@"age"];
NSLog(@"%d %@ %d", ID, name, age);
}
}
</code></pre>
附:FMDB中常用的SQL语句
@"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);"
@"INSERT INTO test_tab (name,age,mail) VALUES (?,?,?)
@"UPDATE test_tab SET name=? WHERE name=?"
@"DELETE FROM test_tab WHERE name=?"
@"SELECT * FROM test_tab ORDER BY age DESC"
Tips:继续学习!