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.显示结果

posted @ 2015-04-03 17:26  Hanks、  阅读(184)  评论(0编辑  收藏  举报