• FMDB使用(转载)


    1、首先要先导入第三方类库FMdatabase。

    2、获得存放数据库文件的沙盒地址。

     

    1 +(NSString *)databaseFilePath
    2 {
    3  
    4 NSArray *filePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    5 NSString *documentPath = [filePath objectAtIndex:0];
    6 NSLog(@"%@",filePath);
    7 NSString *dbFilePath = [documentPath stringByAppendingPathComponent:@"db.sqlite"];
    8 return dbFilePath;
    9  
    10 }

     

    3、创建数据库的操作

     

    1 +(void)creatDatabase
    2 {
    3 db = [[FMDatabasedatabaseWithPath:[selfdatabaseFilePath]] retain];
    4 }

     

    4、创建表

     

    1 +(void)creatTable
    2 {
    3 //先判断数据库是否存在,如果不存在,创建数据库
    4 if (!db) {
    5 [selfcreatDatabase];
    6 }
    7 //判断数据库是否已经打开,如果没有打开,提示失败
    8 if (![db open]) {
    9 NSLog(@"数据库打开失败");
    10 return;
    11 }
    12  
    13 //为数据库设置缓存,提高查询效率
    14 [dbsetShouldCacheStatements:YES];
    15  
    16 //判断数据库中是否已经存在这个表,如果不存在则创建该表
    17 if(![dbtableExists:@"people"])
    18 {
    19 [db executeUpdate:@"CREATE TABLES people(people_id INTEGER PRIMARY KEY AUTOINCREAMENT, name TEXT, age INTEGER) "];
    20  
    21  
    22 NSLog(@"创建完成");
    23 }
    24  
    25 }

     

    5、增加表数据

     

    1 +(void)insertPeople:(People *)aPeople
    2 {
    3 if (!db) {
    4 [selfcreatDatabase];
    5 }
    6  
    7 if (![db open]) {
    8 NSLog(@"数据库打开失败");
    9 return;
    10 }
    11  
    12 [dbsetShouldCacheStatements:YES];
    13  
    14 if(![dbtableExists:@"people"])
    15 {
    16 [selfcreatTable];
    17 }
    18 //以上操作与创建表是做的判断逻辑相同
    19 //现在表中查询有没有相同的元素,如果有,做修改操作
    20 FMResultSet *rs = [dbexecuteQuery:@"select * from people where people_id = ?",[NSStringstringWithFormat:@"%d",aPeople.peopleID]];
    21 if([rs next])
    22 {
    23 NSLog(@"dddddslsdkien");
    24 [dbexecuteUpdate:@"update people set name = ?, age = ? where people_id = 1",aPeople.name,[NSStringstringWithFormat:@"%d",aPeople.age]];
    25 }
    26 //向数据库中插入一条数据
    27 else{
    28 [dbexecuteUpdate:@"INSERT INTO people (name, age) VALUES (?,?)",aPeople.name,[NSStringstringWithFormat:@"%d",aPeople.age]];
    29 }
    30  
    31 }

     

    6、删除数据

     

    1 +(void)deletePeopleByID:(int)ID
    2 {
    3 if (!db) {
    4 [selfcreatDatabase];
    5 }
    6  
    7 if (![db open]) {
    8 NSLog(@"数据库打开失败");
    9 return;
    10 }
    11  
    12 [dbsetShouldCacheStatements:YES];
    13  
    14 //判断表中是否有指定的数据, 如果没有则无删除的必要,直接return
    15 if(![dbtableExists:@"people"])
    16 {
    17 return;
    18 }
    19 //删除操作
    20 [db executeUpdate:@"delete from people where people_id = ?", [NSStringstringWithFormat:@"%d",ID]];
    21  
    22 [db close];
    23 }

     

    7、修改操作与增加操作的步骤一致

    8、查询

     

    1 +(NSArray *)getAllPeople
    2 {
    3  
    4 if (!db) {
    5 [selfcreatDatabase];
    6 }
    7  
    8 if (![db open]) {
    9 NSLog(@"数据库打开失败");
    10 return nil;
    11 }
    12  
    13 [dbsetShouldCacheStatements:YES];
    14  
    15 if(![dbtableExists:@"people"])
    16 {
    17 return nil;
    18 }
    19  
    20 //定义一个可变数组,用来存放查询的结果,返回给调用者
    21 NSMutableArray *peopleArray = [[NSMutableArrayalloc] initWithArray:0];
    22 //定义一个结果集,存放查询的数据
    23 FMResultSet *rs = [dbexecuteQuery:@"select * from people"];
    24 //判断结果集中是否有数据,如果有则取出数据
    25 while ([rs next]) {
    26 People *aPeople = [[People alloc] init];
    27  
    28 aPeople.peopleID = [rs intForColumn:@"people_id"];
    29 aPeople.name = [rs stringForColumn:@"name"];
    30 aPeople.age = [rs intForColumn:@"age"];
    31 //将查询到的数据放入数组中。
    32 [peopleArray addObject:aPeople];
    33 }
    34 return [peopleArray autorelease];
    35 }
     
  • 相关阅读:
    7 Django的模板层
    6 Django的视图层
    5 Django-1的路由层(URLconf)
    qt 如何安装 Debuggers 调试器 ?
    window7 x64 vs2015 如何编译 libqr 二维码生成库?
    如何在 window7 环境编译 zlib 库?
    LNK2026 模块对于 SAFESEH 映像是不安全的
    如何识别二维码?
    qt Multimedia 模块类如何使用?
    qt 使用msvc编译器出现乱码如何解决?字符串中存在空格?
  • 原文地址:https://www.cnblogs.com/xiaoxiaoyublogs/p/4870737.html
Copyright © 2020-2023  润新知