码迷,mamicode.com
首页 > 数据库 > 详细

FMDB复习

时间:2017-09-15 18:45:52      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:增删改   var   cut   集合   分页查询   col   mda   name   close   

//  colum/列/字段
//  row/行/记录
//  主键的作用是唯一标识一条记录
//  sql语句注意:不区分大小写,以分号结束

//  如果增加字段,可能要指定数据类型,SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型。

http://www.cnblogs.com/shenliang123/archive/2012/04/07/2435908.html

 

先声明两个必须变量:

{
    NSString *path; //数据库的存储路径
}
@property (nonatomic,strong)FMDatabase *dataBase;

1. 创建数据库

//1.创建一个数据库文件存放的位置路径
    path=[NSHomeDirectory() stringByAppendingString:@"/Documents/users.db"];
//2.创建FMDatabase对象 并用数据库文件路径初始化 _dataBase=[FMDatabase databaseWithPath:path];
//3.打开数据库 if([_dataBase open]){ NSLog(@"数据库成功打开"); }else { NSLog(@"数据库打开失败"); }
//4.关闭数据库 [_dataBase close]; // 为什么要关闭数据库? // 注意:每一次对数据库操作(增删改查)的时候,重新打开数据库,然后关闭,以免数据库,一直保持打开状态,造成不必要的资源消耗

2. 创建表

    NSString *sql=@"CREATE TABLE if not exists users (id integer primary key autoincrement,name VARCHAR(20),age VARCHAR(10));";
    // sql语句为什么一般都用大写?
    // 在iOS开发里面,为了区别sql的关键字,与表名或者列名,以及变量名区分,sql 语句通常都是用大写来标示
    // 如果id设置为自动增长的话,那么把表中的数据删除后,重新插入新的数据,id的编号不是从0开始,而是接着之前的id进行编号。PRIMARY KEY AUTOINCREMENT, 也就是这句话。
    
    //1.打开数据库
    if ([_dataBase open]) {
        //2.执行sql语句
        [_dataBase executeUpdate:sql];
    }else{
        NSLog(@"数据库打开失败");
    }
    //3.关闭数据库
    [_dataBase close];

 

3. 插入数据

    NSString *her=@"张三";
    NSString *sql=@"INSERT INTO users (name = ?,age = ?);";
    
    // NSString *sql2=@"INSERT INTO users (name,age) VALUES (?,?);";
    // executeUpdateWithFormat : 不确定的参数用%@、%d等来占位
    //1.
    if([_dataBase open]){
        //2. 插入单条数据
        [_dataBase executeUpdate:sql];
        [_dataBase executeUpdateWithFormat:@"INSERT INTO users (name,age) VALUES (%@,%d);",her,24];
        
        //多次插入
       for(int i=0;i<1000;i++){
           [_dataBase executeUpdateWithFormat:@"INSERT INTO users (name,age) VALUES (%@,%d);",@"刘亦菲",24+i];
        }
    }else{
        NSLog(@"打开数据库失败");
    }

    //3.
    [_dataBase close];

4. 删除数据

    NSString *sql=@"DELETE FROM users WHERE name = ‘范冰冰‘;";
    //1.
    if([_dataBase open]){
        //2.
        [_dataBase executeUpdate:sql];
    }else {
        NSLog(@"数据库打开失败");
    }
    //3.
    [_dataBase close];

5. 修改数据

    NSString *sql=@"UPDATE users SET name = ? WHERE id > 1;";
    //1.
    if ([_dataBase open]) {
        //2.
        [_dataBase executeUpdate:sql,@"杨颖"];
        
    }else{
    
        NSLog(@"数据库打开失败");
        
    }
    //3.
    [_dataBase close];

如果是升级,可能要增加字段,注意删除字段是不支持的。增加字段可以这样:

NSString *sql=@"ALTER TABLE users ADD COLUMN sex bit"; //增加sex字段

6. 查询数据

NSString *sql=@"SELECT * FROM users";
//NSString *sql=@"SELECT * FROM users WHERE id > ?;";
//1.
    if ([_dataBase open]) {
        
        //2.
        // 查询语句查询到的是一个集合,
        FMResultSet *set=[_dataBase executeQuery:sql];
        
        // 遍历查询到的结果集合
        while ([set next]) {
  
            //NSInteger ID=[set intForColumn:@"id"];
            NSString *name=[set stringForColumn:@"name"];
            NSString *age=[set stringForColumn:@"age"];
            NSLog(@"name:%@ age:%@",name,age);
            
        }
    }else{
    
        NSLog(@"数据库打开失败");
    }
    //3.
    [_dataBase close];

分页查询:

NSString *sql=@"SELECT * FROM users ORDER BY age DESC LIMIT 0,5;";
//ORDER BY age DESC 先降序
//LIMIT 0,5  跳过0条记录,取5条记录

 

FMDB复习

标签:增删改   var   cut   集合   分页查询   col   mda   name   close   

原文地址:http://www.cnblogs.com/liuw-flexi/p/7527221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!