iOS第三方数据库FMDB使用方法

这篇博客介绍了iOS开发中使用FMDB第三方库进行SQLite数据库操作的基本步骤。包括如何检查数据库存在性以及如何创建数据库。FMDB简化了SQLite的使用,是iOS开发中的常见选择。
摘要由CSDN通过智能技术生成

工程中经常需要使用数据库来保存一些数据在本地手机上,iOS是自带Sqlite的,但是常用的还是第三方的类库——FMDB。这里说一说基本的使用方法

对于数据库来说,最开始的当然是建立数据库,在使用数据库前,最好先检查一下数据库是否存在,如果存在,则把数据库实例指向已存在的那个数据库,如果不存在,则创建:

//SqlTest.h
@property (strong, nonatomic) FMDatabase *db;//数据库

————————————————————————————————

//SqlTest.m

    if (!self.db) {//判断数据库是否存在,不存在则创建数据库
       //获取文件路径
        NSArray *docs = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *dbFilePath = [docs[0] stringByAppendingPathComponent:@"db.sqlite"];
       //获取或创建数据库
        self.db = [FMDatabase databaseWithPath:dbFilePath];
    }

在找到或创建数据库后,打开一下数据库,如果打开失败,则提示并处理,打开后,为数据库设置缓存来提高查询效率:

    if (![self.db open]) {//判断数据库是否打开,没打开则提示失败
        NSLog(@"打开数据库失败");
        return;
    }
    [self.db setShouldCacheStatements:YES];//为数据库设置缓存,提高查询效率

接下来的工作是建表,这里示例建立一个存储用户名和密码的表:同样的,在使用时,先检查数据库中是否有该表,有则跳过建表过程,没有则建表:

    if (![self.db tableExists:@"user"]) {//判断user表是否存在,不存在则创建表
		//这里给id设置为自增并且为key
        [self.db executeUpdate:@"CREATE TABLE user(_id INTEGER PRIMARY KEY, Username VARCHAR(50), Password VARCHAR(50))"];
        NSLog(@"创建表成功");
    }

有了表以后就可以对表中的数据进行增删改查了,先是添加数据到表中:

    //向user表中添加一行用户名和密码分别为Cloudox和123456的数据
    [self.db executeUpdate:@"INSERT INTO user (Username, Password) VALUES (?, ?)", @"Cloudox", @"123456"];
    NSLog(@"添加数据成功");

添加了数据后可以进行查询:

    //在user表中查询用户名为Cloudox的行数据
	FMResultSet *rs = [self.db executeQuery:@"SELECT * FROM user WHERE Username = (?)", @"Cloudox"];
	//循环读取所有搜索到的数据获取想要的列信息,这里只有一行,获取对应的密码
    while ([rs next]) {
        self.password = [rs stringForColumn:@"password"];
    }

要修改某列的数据也很简单:

	//修改用户名为Cloudox的行的密码
	[self.db executeUpdate:@"UPDATE user SET Password = (?) WHERE Username = (?) ", "456789", "Cloudox"];

删除某行与修改某行类似:

	//删除用户名为Cloudox的行
	[self.db executeUpdate:@"DELETE FROM user WHERE Username = (?)", "Cloudox"];

如果想删除表中的所有数据,有一个快捷的方法可以清除表:

	//清除名为user的表的所有数据
	[self.db executeUpdate:@"DELETE FROM user"];

或者更彻底想要删除表也可以:

	//删除名为user的表
	[self.db executeUpdate:@"DROP TABLE user"];

或者再加大力度毁灭世界销毁数据库本身,这里用到的就不止是FMDB的方法了,而是用fileManager来直接删除文件:

    NSError *error;  
    //创建文件管理器
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    //判断是否存在数据库文件,存在则删除
	NSArray *docs = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *dbFilePath = [docs[0] stringByAppendingPathComponent:@"db.sqlite"];
    if ([fileManager fileExistsAtPath:dbFilePath])  
    {
        [self.db close];  //先关闭数据库再删除
		//删除文件
        [fileManager removeItemAtPath:dbFilePath error:&error]; 
    }  

至此,基本的用法都说到了,数据库都被销毁了,日后遇到了什么新的用法再来重建世界吧 大笑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值