ios mysql 修改数据库文件_iOS:第三方数据库文件FMDB的使用

•FMDB的使用:在sqlite的基础上,将sqlite中的函数进行封装产生的一个数据库文件。

–FMDB的好处是对基本C库的封装,方便使用。同时还提供了多线程操作数据库带来的读脏数据等问题的方法。

–FMDB有三个主要的类

FMDatabase:对象就代表一个单独的SQLite数据库用来执行SQL语句

FMResultSet:使用FMDatabase执行查询后的结果集

FMDatabaseQueue:用于在多线程中执行多个查询或更新,它是线程安全的

对数据库所有的操作只需下面的方法即可:

查询语句:- (FMResultSet *)executeQuery:(NSString*)sql, ...

- (BOOL)next;

-{type}ForColumnIndex:(int)columnIdx

创建、插入、修改等等语句:- (BOOL)executeUpdate:(NSString*)sql, ...

执行SQL语句:

<1>使用:(需要FMDatabase *db成员变量)

创建或打开:FMDataBase类

self.db = [FMDatabase databaseWithPath:fileName];  //创建数据库

[self.db open];//打开数据库

[self.db close]; //关闭数据库

//对数据库进行插入、修改的操作

[self.db executeUpdate:@“CREATE TABLE IF NOT EXISTS t_student (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT,age INTEGER)”];

[self.db executeUpdate:@"INSERT INTO t_student(name , age) VALUES(?, ?);", @"xuneng", @(10)];

[self.db executeUptate:@"update t_student set name = 'lisi' where age = @(10)"];

<2>查询:FMResultSet类(数据取出完全后,不需要再去关闭结果集,当新的结果集产生,或者其数据库关闭时,会自动关闭。)

// 1.查询

FMResultSet *set = [self.db  executeQuery:@"SELECT * FROM t_student;"];  //返回结果集

// 2.取出数据

while ([set next])

{

// 取出姓名

NSString *name = [set stringForColumnIndex:1];

// 取出年龄

int age = [set intForColumnIndex:2];

NSString *name = [set stringForColumn:@"name"];

int age = [set intForColumn:@"age"];

NSLog(@"name = %@, age = %d", name, age);

}

创建数据库并进行增删改查的操作举例如下:

1、首先导入sqlite本地数据库和第三方数据库FMDB

5296d7c6b5b323e4decae0a87c513fc6.png

6e6d772310b57a4367caea128f621dab.png

16f07a39046f5e9cf14b1b1eeffa5b31.png

2、在UIViewController类中对数据库表进行增删该查操作如下:

《1》数据库路径

NSArray *dics = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *dbPath = [[dics lastObject] stringByAppendingPathComponent:@"user.db"];

《2》 创建数据库

self.db = [FMDatabase databaseWithPath:dbPath];

《3》打开数据库

if(![self.db open])

{

return; //打开数据库失败

}

《4》创建数据库表

if(![self.db executeUpdate:@"create table if not exists user (ID integer primary key autoincrement,name text,password text)"])

{

return; //创建数据库表失败

}

《5》插入数据

if(![self.db executeUpdate:@"insert into user (name,password) values('admin','123456')"])

{

return; //插入数据失败

}

《6》修改数据

if(![self.db executeUpdate:@"update user set name = 'zhangsan' where ID = 2"])

{

return; //修改数据失败

}

《7》获取结果集

FMResultSet *resultSet = [self.db executeQuery:@"select * from user"];

《8》遍历结果集,取出数据

while ([resultSet next])

{

int ID = [resultSet intForColumnIndex:0];

NSString *name = [resultSet stringForColumnIndex:1];

NSString *password = [resultSet stringForColumnIndex:2];

NSLog(@"ID:%d,name:%@,password:%@",ID,name,password);

}

《8》//关闭数据库

[self.db close];

演示结果如下:

2015-09-21 21:44:38.640 第三方数据库FMDB[4207:296060] ID:1,name:admin,password:123456

2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:2,name:zhangsan,password:123456

2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:3,name:admin,password:123456

2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:4,name:admin,password:123456

2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:5,name:admin,password:123456

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值