IOS-FMDB基础实例

项目中导入FMDB

1.手动添加,FMDB库文件。

2.添加编译参数,MRC和ARC混编。

FMDB的运行环境是在MRC下的,而大多数的项目是在ARC下的,项目Build Phases/complie Sources下,选择FMDB的几个.m文件,双击,添加编译参数,-fno-objc-arc.
如果不添加编译参数会出现如下错误:
在这里插入图片描述
添加后:
在这里插入图片描述

3.导入系统依赖库,libsqlite3.tbd

如图:
在这里插入图片描述

4.在需要的地方添加,FMDatabase.h

数据库的基本使用

1.新建数据库

_db=[FMDatabase databaseWithPath:_sqlName];//_sqlName是数据库的完整路径
if([_db open]){
NSLog(@“打开数据库成功”);
}else{
NSLog(@“打开数据库失败”);
}

2.新建表

NSString*sql=@“CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL, sex text NOT NULL)”;
BOOL result=[_db executeUpdate:sql];
if(result){
NSLog(@“创建表成功”);
}else{
NSLog(@“创建表失败”);
}

3.插入数据

(1)executeUpdate,确定的参数用‘参数值’

BOOL result=[_db executeUpdate:@“insert into t_student (name,age,sex) values (‘nn’,8,‘nan’)”];

(2)executeUpdate,不确定的参数用?占位,后面的参数必须是oc对象,

BOOL result=[_db executeUpdate:@“INSERT INTO t_student (id,name,age,sex) VALUES (?,?,?,?)”,@(mark),name,@(age),sex];

(3)executeUpdateWithFormat,不确定的参数用%@,%ld等格式占位,执行语句不区分大小写

BOOL result=[_db executeUpdateWithFormat:@“insert into t_student (name,age,sex) values (%@,%ld,%@)”,name,age,sex];

(4)参数是数组的使用方式,“”withArgumentsInArray:@[, , ,];

BOOL result=[_db executeUpdate:@"insert into t_student (name,age,sex) values(?,?,?)"withArgumentsInArray:@[name,@(age),sex]];

4.删除数据,删除指定行的数据,用?占位,后面的参数必须是oc对象,所以需要将ld包装成oc对象,@(idnum)

BOOL result=[_db executeUpdate:@“delete from t_student where id=?”,@(idnum)];
//BOOL result=[_db executeUpdate:@“delete from t_student”];//删除所有数据

5.修改数据

NSString *oldName=@“sanjin2”;
NSString *newOld=@“zhujiu”;
BOOL result=[_db executeUpdate:@“update t_student set name= ? where name=?”,newOld,oldName];
if(result){
NSLog(@“修改信息成功”);
}else{
NSLog(@“修改信息失败”);
}
}

6.查询数据

(1)查询结果排序,降序desc,升序asc

FMResultSet *resultSet =[_db executeQuery:@“select * from t_student s order by s.age desc”];

(2)条件查询,where

FMResultSet *resultSet=[_db executeQuery:@“select * from t_student where id<4”];
// FMResultSet *resultSet=[_db executeQuery:@“select * from t_student where id<=?”,@(3)];

(3)分页查询limit 从第几个开始取,取多少个

FMResultSet *resultSet =[_db executeQuery:@“select * from t_student limit 0,5”];
while ([resultSet next]) {
NSInteger mid= [resultSet intForColumn:@“id”];
NSString *name=[resultSet stringForColumn:@“name”];
NSInteger age=[resultSet intForColumn:@“age”];
NSString *sex=[resultSet stringForColumn:@“sex”];
NSLog(@“id=%ld,name=%@,age=%ld,sex=%@”,mid,name,age,sex);
}

(4)查询表中有多少条数据

int count = 0;
FMResultSet *resultSet=[_db executeQuery:@“select count( * ) from t_student”];
while ([resultSet next]) {
count=[resultSet intForColumnIndex:0];
}
NSLog(@"%d",count);

7.删除表

BOOL result=[_db executeUpdate:@“drop table if exists t_student”];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言之前是一直做web开发,对于做web开发的人而言一定熟悉各种ORM,各种语言针对mysql的ORM有很多,比如PHP的各类框架yii,thinkphp,laravel,ruby语言的rails, GO语言的beego等,IOS开发则面对的数据库是sqlite。FMDB 是基于sqlite的数据库操作类,稳定,但用起来还是不够简洁,PYFMDB是基于FMDB的更高层次的数据库操作类。程序介绍 PYFMDB分为三部分,PYFMDB 基于FMDB负责数据库底层操作处理,PYTable是自定义Table的基类,提供基于具体数据库表的操作,是更高层次的封装PYFMDB,PYStructure是定义数据库表结构处理类。快速入门导入PYFMDB你可以在 Podfile 中加入下面一行代码来使用PYFMDBpod 'PYFMDB'创建自定义Table类创建一个Table类继承PYTable,例如演示代码中创建了CarTable类。设置数据库表名在CarTable.m 中 重写如下方法:-(NSString *)tableName{     return @"car"; }设置数据库表结构    在CarTable.m 中 重写如下方法:-(PYStructure *)structure{     PYStructure * st = [[PYStructure alloc] init];     [st addWithField:@"id" andType:PYStructureTypeAutoInc];     [st addWithField:@"name" andType:PYStructureTypeNormalText];     [st addWithField:@"wheels" andType:PYStructureTypeNormalInt];     return st; }PYStructureType PYStructureTypeAutoInc = 0,//主键,int类型,自增 PYStructureTypePrimaryInt = 1,//主键,int类型,自增 PYStructureTypePrimaryText = 2,//主键,text类型 PYStructureTypeNormalInt = 3,//普通列,int类型 PYStructureTypeNormalText = 4,//普通列,text类型CarTable *table = [[CarTable alloc] init];新增数据普通新增数据NSDictionary *fields = @{@"name":@"宝马",@"wheels":@1};  [table addFields:fields];新增或者更新数据【判断数据是否已存在,存在则更新数据,不存在则新增数据】NSDictionary *fields = @{@"name":@"宝马",@"wheels":@1}; [table addOrUpdateFields:fields andWhere:@"name='\u5b9d\u9a6c'"];判断是否已经存在数据,仅不存在数据时更新数据NSDictionary *fields = @{@"name":@"宝马",@"wheels":@1}; [table addFieldsIfNotExist:fields];删除数据指定字段删除NSString *where = @"name='\u5b9d\u9a6c'"; [table deleteWithWhere:where];多种条件删除NSString *where = @"name='\u5b9d\u9a6c' and id >=5"; [table deleteWithWhere:where];清空数据表[table truncate];更新数据更新多个字段NSString *where = @"name='\u5b9d\u9a6c'"; NSDictionary *fields = @{@"name":@"奔驰",@"wheels":@2}; [table updateFields:fields andWhere:where];更新1个字段[table setField:@"name" andValue:@"奔驰" andWhere:@"name='\u5b9d\u9a6c'"];查询数据查询表全部数据,全部字段,返回的结果为NSArrayNSArray *results = [table selectAll];按条件查询数据,全部字段,返回的结果为NSArrayNSString *where = @"name='\u5b9d\u9a6c'"; NSArray *results = [table selectWithWhere:where];按条件查询数据,指定字段,返回结果为NSArray 多个字段用半角逗号隔开NSString *where = @"name='\u5b9d\u9a6c'"; NSString *fields = @"id,wheels"; NSArray *results = [table selectWithWhere:where andFields:fields];按条件查询数据,指定字段,设置分页,返回结果为NSArray 要查询全部字段时 用 * 代表查询全部字段NSString *where = @"name='\u5b9d\u9a6c'"; NSString *fields = @"id,wheels"; //NSString *fields = @"*"; NSArray *results = [table selectWithWhere:where andFields:fields andPage:1 andPageSize:10];//取第一页,每页10条按条件查询数据,指定字段,设置分页,设置排序,返回结果为NSArray 排序中 desc 代表 降序,asc代表升序 单个字段排序 如 id desc 多个字段排序 如 id,wheel ascNSString *where = @"name='\u5b9d\u9a6c'"; NSString *fields = @"id,wheels"; //NSString *fields = @"*"; NSArray *results = [table selectWithWhere:where andFields:fields andPage:1 andPageSize:10 andOrder:@"id desc"];按条件查询单行数据,返回结果为NSDictionaryNSString *where = @"name='\u5b9d\u9a6c'"; NSDictionary *result = [table findWithWhere:where];按条件查询单行单个字段数据,返回结果为id类型id result = [table getField:@"name" andWhere:@"id=1"];NSUInteger tableCount = [table count];判断表是否为空if([table isEmpty]){         //table is empty  }判断数据是否存在NSDictionary *fields = @{@"name":@"宝马",@"wheels":@1};     if([table hasFields:fields]){         //数据已存在     }判断where查询是否有数据if([table hasWhere:@"name='\u5b9d\u9a6c'"]){         //有查询结果     }原生sql支持执行一个sql查询NSString *sql = @"select * from car"; NSArray *results = [table executeQueryWithSql:sql];执行一个sql操作,如更新,删除,插入等NSString *sql = @"delete from car where name='BMW'"; BOOL result = [table executeUpdateWithSql:sql];调试信息NSLog(@"dbpath:%@",table.databasePath);//数据库位置 NSLog(@"lastSql:%@",table.lastSql);//最后执行的sql NSLog(@"dbname:%@",table.databaseName);//数据库名 NSLog(@"tablename:%@",table.tableName);//数据表名 NSLog(@"table structure:%@",table.structure.structureDictory);//数据表结构 NSLog(@"table fields:%@",table.structure.fieldsString);//数据表字段 标签:PYFMDB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值