三、数据库之FMDB使用

2017-03-23  本文已影响32人  Dosun

数据库主要是有增、删、改、查的四个功能。本文用第三方框架,如何简单使用FMDB,其中涉及到SQL语句部分就不细讲,请参考一、数据库之SQL语句

一、初始化数据库

在初始化数据库时,要注意如下几点:
1、SQL语句中,在表名前加入IF NOT EXISTS。
2、数据库在创建表时,一定有打开数据库。在数据库不用的时候,将数据库关闭。

//初始化数据库
-(void)initDataBase{
    //得到路径
    NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSString *dbPath = [docPath stringByAppendingPathComponent:@"model.db"];
    _db = [FMDatabase databaseWithPath:dbPath];
    
    //打开数据库
    [_db open];
    
    //初始化列表,打开数据库后开始建表
    NSString   *personSqlit = @"CREATE TABLE IF NOT EXISTS 'MyPerson' ('id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'person_id' INTEGER ,'person_name' TEXT ,'person_age' integer ,'person_number' integer );";
    
    NSString *carSqlit = @"CREATE TABLE IF NOT EXISTS 'Car' ('id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'own_id' integer,'car_id' INTEGER,'car_brand' TEXT,'car_price' integer);";
    
    [_db executeUpdate:personSqlit];
    [_db executeUpdate:carSqlit];
    
    [_db close];
    
}

二、数据库增加数据

数据库增加数据要注意如下几点
1、SQL中的值可以用?作为占位符
2、如果表中增加值是整形,如person_id是整形,要将它转化NSNumber。否则会报错,另外如果值为空时,请参考二、数据库之FMDB简介

//增加人
-(void)addPerson:(GDPerson*)person
{
    [_db open];
    NSInteger maxID = 0;
    FMResultSet *set = [_db executeQuery:@"SELECT * FROM MyPerson"];
    
    //得到数据库中最大的id
    while ([set next]) {
        if (maxID < [[set stringForColumn:@"person_id"] integerValue]) {
            maxID = [[set stringForColumn:@"person_id"] integerValue];
        }
    }
    maxID += 1;
    
    [_db executeUpdate:@"INSERT INTO MyPerson(person_id,person_name,person_age,person_number)VALUES(?,?,?,?);",@(maxID),person.name,@(person.age),@(person.number)];
    
    
    [_db close];

}

三、数据库删除

//删除相应车牌号的id
-(void)deletePerson:(GDPerson*)person{
    [_db open];
    
    [_db executeUpdate:@"DELETE FROM MyPerson WHERE id = ?",@(person.number)];
    
    [_db close];

}

四、数据库修改

-(void)updatePerson:(GDPerson*)person
{

    [_db open];
    [_db executeUpdate:@"UPDATE MyPerson SET person_name = ? WHERE person_id = ?",person.name,@(person.person_id)];
    [_db executeUpdate:@"UPDATE MyPerson SET person_age = ? WHERE person_id = ?",@(person.age),@(person.person_id)];
    
    [_db close];


}

五、数据库的查询

数据库的查询会用到FMResultSet类,然后通过循环遍历[FMResultSet next]方法,得到每一行,最后通过stringForColumn:得到相应的元素。

-(NSArray *)getAllPerson
{
    [_db open];
    FMResultSet *result = [_db executeQuery:@"SELECT * FORM MyPerson"];
    
    NSMutableArray *mArr = [NSMutableArray array];
    
    while ([result next]) {
        GDPerson *person = [GDPerson new];
        person.name = [result stringForColumn:@"person_name"];
        person.age = [result intForColumn:@"person_age"];
        person.number = [result intForColumn:@"person_number"];
        person.person_id = [result intForColumn:@"person_id"];
        [mArr addObject:person];
    }
    
    [_db close];
    
    return  mArr.copy;
}

六、总结

1、FMDB的使用,通常是先建立数据库,再executeUpdate方法通过SQL语句创建表格。
2、FMDB通常是用于增删改查,其中增、删、改都是用executeUpdate方法。而查是用executeQuery方法。
以上是FMDB简单的用法,本人小白,不足之处,请指正,感谢!

上一篇 下一篇

猜你喜欢

热点阅读