iOS开发用到的数据库主要有两种,一种是苹果原生的,CoreData,不过因为其繁琐的代码,导致很多程序员都不买他的帐,用的人也不是很多;那么第二种也就是现在比较流行的的小型嵌入式数据库sqlite。我个人觉得sqlite之所以流行主要是因为他的体积小,易于管理,并且支持SQL语句,学习成本也低。当然,纯原生的sqlite在iOS使用过程中也是比较繁琐的,通常我们都是用第三方框架FMDB。
下载连接 https://github.com/ccgus/fmdb
通过上面的链接我们可以得到最新版的FMDB,接下里我介绍一下他的使用。首先我们创建一个工程,取名FMDBDemo,接下来我做一下相关的配置。
1.导入第三方框架
选中工程根文件-》点击右键-》add File to (工程名) -》选中刚才下载的FMDB矿建 -》选中添加,一定注意要选择copy item选项。
2.导入依赖库
选中工程-》BuildPhase -》Link Library -》点击+-》搜索sqlite -》选中sqlite3-》点击添加
做完了上述的事情 我们就可以愉快的开发了。在这里我将设一个实例场景,我们假设一个教室有很多的学生,每个学生都有他们的姓名,同时他们每个人都有一个宠物,每个人宠物有名字和你年龄。好,接下来我们写一个小demo,用来管理这些信息。
开始之前,在我们的.h文件中引入FMDB.h头文件
然后创建一个全局的变量db,类型为FMDatabase
1.首先我们创建一个数据库db
//创建db存储的路径
NSString *path = [NSString stringWithFormat:@"%@/Documents/%@", NSHomeDirectory(), dbName);
//创建数据库
_db = [FMDBDatabase alloc] initWithPath:path];
if ([db open]) {
NSLog("创建数据库成功");
} else {
NSLog("创建数据库失败");
}
2.给数据库创建一个class表
//首先判断数据库能否打开
if([_db open]) {
//首先定义创建表的sql语句,说明一下,FMDB只是对sqlite的封装,其底层实现还是sqlite。
NSString *sql = @"create table if not exists class(stuName archer(20), petName archer(20), petAge int)" ;
if ([_db executeUpdate: sql]) {
NSLog("创建表成功”);
} else {
NSLog("创建表失败");
}
} else {
NSLog("打开失败");
}
3.给数据库添加数据
NSString *sql = [NSString stringWithFormat:@"insert into class values('%@', '$@', '%@')", stuName, petName, petAge];
if ([_db executeUpdate: sql]) {
NSLog("添加数据成功");
} else {
NSLog("添加数据失败");
}
4.数据库查找数据库
NSString *sql = [NSString stringWithFormat:@"select * from class"];
NSFMResultSet *rs = [_db executeQuery:sql];
if ([_db executeQuery:sql]) {
while ([rs next]) {
NSLog("StuNaem: %@", [rs stringForColumn:@"stuName"]);
}
}
5.数据库删除数据
//这里我们以stuName为依据删除该条数据
NSString *sql = [NSString stringWithFormat:@"delete from class where stuName = '%@'", stuName];
if ([_db executeUpdate:sql]) {
NSLog("删除成功");
} else {
NSLog("删除失败");
}
6.数据的跟新操作
NSString *sql = [NSString stringWithFormat:@"update class set stuName = '%@' where stuName = 'stuName'"];
if ([_db executeUpdate:sql]) {
NSLog("修改成功");
} else {
NSLog("修改失败");
}
结束语
FMDB的基本使用方法大致就这么多。这里只是给大家提供了基本的用法,希望对新手能有所帮做。
<a href=https://github.com/stevelyc/FMDBDemoPractce>Demo的github地址github</a>
网友评论