iOSuseful skills寒哥管理的技术专题

iOS中的数据存储(FMDB)

2015-03-30  本文已影响1351人  大慈大悲大熊猫

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>

附: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:继续学习!

上一篇下一篇

猜你喜欢

热点阅读