数据库主要是有增、删、改、查的四个功能。本文用第三方框架,如何简单使用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简单的用法,本人小白,不足之处,请指正,感谢!






网友评论