FMDB在IOS开发中的使用
由于新项目中使用的数据库为FMDB,所以得重新学习,特此mark一下,以免忘记,也跟初学的童鞋分享一下学习心得。
1)首先导入FMDB的必要文件:
FMDatabase.h FMDatabase.m FMDatabaseAdditions.h FMDatabaseAdditions.m FMDatabasePool.h FMDatabasePool.m FMDatabaseQueue.h FMDatabaseQueue.m FMResultSet.h FMResultSet.m
为了省去要这些文件,我在附件里打包好了,欢迎使用。
2)打开或者建立数据库:
//NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)
// NSString *documentDirectory = [paths objectAtIndex:0];
上面两句是获取到文件地址,属于比较官方的,但是因为即使创建数据库成功了,也很难找到它所在路径,所以为了能看到成功的DB文件,documentDirectory用以下方式创建,你们也可随意修改为最容易找到的文件夹就行.
NSString *documentsDirectory=@"/Users/liuyanfeng/Desktop/iosProject/MapPro/MapPro/";
数据库的地址:
NSString *dbPath = [documentsDirectory stringByAppendingPathComponent:@"MapProDB.db"];
打开或者创建数据库,如果MapProDB.db已经存在,则直接打开,如果不存在,就在该目录下创建一个MapProDB.db的数据库:
FMDatabase *db = [FMDatabase databaseWithPath:dbPath] ;
if (![db open]) {
NSLog(@"数据库连接失败");
return;
}
NSLog(@"数据库打开i");
[db close];
这样,数据库测试成功,你可以在刚才设定的目录里找到相应的DB文件。
3) 创建表:创建user的表,两个字段,两个为string类型的username,password:
[db executeUpdate:@"CREATE TABLE User (username text, password text)"];
4)插入数据:
[db executeUpdate:@"INSERT INTO User (username,password ) VALUES (?,?)",@"jaybril",@"123"] ;
5)更新数据:
[db executeUpdate:@"UPDATE User SET Name = ? WHERE Name = ? ",@"jaybril",@"宝贝"];
6)删除数据:
[db executeUpdate:@"DELETE FROM User WHERE Name = ?",@"jaybril"];
update的基本操作就这几个,接下来是queries!
- //返回数据库中第一条满足条件的结果
- NSString *aa=[db stringForQuery:@"SELECT Name FROM User WHERE Age = ?",@"20"];
这样我们就查询返回了一条数据,那当我们想要查询放返回多条数据怎么办呢?不用愁,之前我就提到了FMDB中的另外一个主要的类,FMResultSet,这是一个结果集!返回多条数据时FMDB会将数据放在这个结果集中,然后我们在对这个结果集进行查询操作!很简单。
- FMResultSet *rs=[db executeQuery:@"SELECT * FROM User"];
- rs=[db executeQuery:@"SELECT * FROM User WHERE Age = ?",@"20"];
- while ([rs next]){
- NSLog(@“%@ %@”,[rs stringForColumn:@"Name"],[rs stringForColumn:@"Age"]);
- }
更多的FMResultSet方法有:
intForColumn:
longForColumn:
longLongIntForColumn:
boolForColumn:
doubleForColumn:
stringForColumn:
dateForColumn:
dataForColumn:
dataNoCopyForColumn:
UTF8StringForColumnIndex:
objectForColumn:
具体查看一下类就行了