iOS开发之用代码实现数据库FMDB的操作
iOS开发之用代码实现数据库FMDB的操作
1.简介
需求作用: 如果需要保存大量的结构较为复杂的数据时候, 使用数据库, 例如交规考试项目
常用的数据库:
(1)Microsoft SQL Server 2000/2008, 中小企业使用较多
(2)Oracle 比较复杂, 大企业使用较多
(3)Mysql数据库, 网站使用较多
(4)sqlite: 本地数据库, 访问数据足够快, 直接访问文件
足够简单, 功能相对其他数据库软件不是特别齐全, 足够用了
足够小, 系统不超过1M, 适合在移动端上使用
2.FMDB操作数据库
(1)配置
导入文件,
添加二进制库 libsqlite3.dylib,
包含头文件#import "FMDatabase.h"
3.数据库在项目中使用-单例设计模式
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //(1)创建数据库 [self creatAndInitDatabase]; //(2)创建数据表 [self createTable]; //(3)插入数据 [self insertdata]; //(4)查询数据 [self queryData]; //(5)修改和删除数据 //参考:插入数据 } -(void)queryData { //显示所有人的信息 NSString *sql = @"select * from StudentInfo"; //FMResultSet 表示查询后结果集 FMResultSet *resultSet = [_database executeQuery:sql]; // while ([resultSet next]) { NSLog(@"sid = %@,username = %@, password = %@,score = %@",[resultSet stringForColumn:@"sid"],[resultSet stringForColumn:@"username"],[resultSet stringForColumn:@"password"],[resultSet stringForColumn:@"score"]); } } -(void)insertdata { int sid = 1501; NSString *username = @"zhangsan"; NSString *password = @"123"; NSString *score = @"100"; NSString *sql = @"insert into StudentInfo(sid,username,password,score)values(?,?,?,?)"; BOOL b = [_database executeUpdate:sql,[NSString stringWithFormat:@"%d",sid],username,password,score]; NSLog(@"b = %d",b); } -(void)createTable { NSString *sql=@"create table if not exists StudentInfo(sid integer,username varchar(20),password varchar(20),score varchar(20))"; //executeQuery 用来执行select语句 BOOL b=[_database executeUpdate:sql]; NSLog(@"b=%d",b); } -(void)creatAndInitDatabase { //ios安全机制 - 沙盒 //(1). 每个应用内容都放在一个沙盒目录下面 //(2). 每个应用只能修改沙盒目录下得文件,其他应用文件无法修改 //(3). 默认文件夹 Documents,Library,tmp //开发: 自己创建的文件放在Documents下面 //确定文件位置 //当前文件夹: NSHomeDirectory() // NSLog(@"home = %@",NSHomeDirectory()); // NSLog(@"%@",[[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSHomeDirectory() error:nil]); //设置路径 NSString *path = [NSString stringWithFormat:@"%@/Documents/stuInfo.sqlite",NSHomeDirectory()]; //创建数据库(如果不存在则创建打开,如果存在则直接打开) _database = [[FMDatabase alloc] initWithPath:path]; if(![_database open]) { NSLog(@"打开失败"); return; } NSLog(@"打开成功"); }
4.显示结果