qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

数据库类库FMDB

前言
  SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库。iOS SDK很早就支持了SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,开源社区中就出现了一系列将SQLite API进行封装的库,而FMDB (https://github.com/tryingx/fmdb-master) 则是开源社区中的优秀者。
  第一步 引入:sqlite3的类库
  第二步 引入:FMDB的类库
  主要包括以下几方面
  引入文件结束以后就可以使用了,使用很简单
  第一步 建立一个数据库类
1 NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; // 获取document文件的路径
2 /**
3  *  强调一点就是对于数据库的名:我们可以用"" 或用 NULL
4  *
5  *  An empty string (@""). An empty database is created at a temporary location. This database is deleted with the FMDatabase connection is closed.
6  也就是说如果我们使用(@""),会创建一个临时数据库,当我们数据库关闭后会自动删除
7  NULL. An in-memory database is created. This database will be destroyed with the FMDatabase connection is closed.
8  在内存中给你创建一个数据库
9  */
10 NSString *dbPath = [docPath stringByAppendingPathComponent:@"student.sqlite"];
11 NSLog(@"%@", dbPath); // 拼接字符串
12 FMDatabase *dataBase = [FMDatabase databaseWithPath:dbPath];
13 [dataBase open];
14 // 用来判断数据库打开是否成功
15 if (![dataBase open]) {
16     NSLog(@"error");
17 }
  第二步 就是执行一些常用的操作
  常用操作:
  1.创建一个表
  NSString *sql = @"CREATE TABLE student(_id Integer primary key, name text, password text, email text)";
  BOOL isCreateTable = [dataBase executeStatements:sql];
  NSLog(@"%d", isCreateTable );
  2.插入数据
  NSString *sqlInsert = @"INSERT INTO student (name, password, email) values ('宝贝', '1232', '3343243')";
  BOOL isInsertOK = [dataBase executeStatements:sqlInsert];
  NSLog(@"%d", isInsertOK );

 3.批量的创建表和插入数据
NSString *sql1 = @"create table bulktest1 (id integer primary key autoincrement, x text);"
"create table bulktest2 (id integer primary key autoincrement, y text);"
"create table bulktest3 (id integer primary key autoincrement, z text);"
"insert into bulktest1 (x) values ('XXX');"
"insert into bulktest2 (y) values ('YYY');"
"insert into bulktest3 (z) values ('ZZZ');";
[dataBase executeStatements:sql1];
  当然也可以通过数组的方式插入数据
  NSArray *stuentInfo = [NSArray arrayWithObjects:@"大傻瓜",@"213",@"123456@qq.com", nil nil];
  [dataBase executeUpdate:@"insert into student (name, password, email) values (?,?,?)" withArgumentsInArray:stuentInfo];
  4.匹配的方式插入数据
  NSString *sqlInsert = @"INSERT INTO student (name, password, email) values (?,?,?)";
  BOOL flag = [dataBase executeUpdate:sqlInsert, @"大宝贝", @"123", @"654321@qq.com"];
  NSLog(@"%d", flag);
  5.1.查询所有数据
  FMResultSet *result = [dataBase executeQuery:@"SELECT * FROM student"];
  [self showInfo:result];
  [result close];
- (void)showInfo:(FMResultSet *)result
{
while ([result next]) {
int _id = [result intForColumnIndex:0];
NSLog(@"id : %d", _id);
NSString *name = [result stringForColumnIndex:1];
NSLog(@"name : %@", name);
NSString *password = [result stringForColumnIndex:2];
NSLog(@"password : %@", password);
NSString *email = [result stringForColumnIndex:3];
NSLog(@"email : %@", email);
}
}
  5.2.查询指定信息
  NSString *sqlInsert = @"SELECT * from  student where name = %@";
  FMResultSet *result = [dataBase executeQueryWithFormat:sqlInsert, @"宝贝"];
  NSLog(@"%@", result);
  [self showInfo:result];
  6.执行删除操作
  NSString *sql = @"delete from student where name = ?";
  [dataBase executeUpdate:sql,@"宝贝"];
  执行更新操作的步骤和删除操作一样,只不过sql语句不同而已
  重要注意事项是:1 使用完数据库后记得关闭
  2 查询结果完场后result也得记得关闭

posted on 2014-05-14 10:12 顺其自然EVO 阅读(184) 评论(0)  编辑  收藏 所属分类: 数据库


只有注册用户登录后才能发表评论。


网站导航:
 
<2014年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜