iOS Sqlite3 Demo 及 FMDB Demo
2016-01-22 01:54
423 查看
本文是主要实现了三个函数:
testSQLite3 是测试系统自带的sqlite3的demo
testFMDB是测试FMDB存取简单的数据类型的 的demo
testFMDB2是将任意对象作为一个整体存入到FMDB的Demo
首先先定义了一个Person类,实现了<NSCoding>协议,对Person对象进行字段存取和整体存取
testFMDB2
testSQLite3 是测试系统自带的sqlite3的demo
testFMDB是测试FMDB存取简单的数据类型的 的demo
testFMDB2是将任意对象作为一个整体存入到FMDB的Demo
首先先定义了一个Person类,实现了<NSCoding>协议,对Person对象进行字段存取和整体存取
//存取任意对象 -(void)testFMDB2{ NSString *cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSString *filename = [cacheDir stringByAppendingPathComponent:@"Person.sqlite"]; //1.建立数据库对象,一个数据库对应一个数据库对象 FMDatabase * db = [FMDatabase databaseWithPath:filename]; //2.打开数据库 if (![db open]) { NSLog(@"数据库连接或者创建失败"); return; } //3. 建表 NSString *createSql = @"create table if not exists t_persons(id integer primary key,person blob not null unique,age integer);"; if (![db executeUpdate:createSql]) { NSLog(@"error:%@",[db lastErrorMessage]); } //4.插入数据 for (int i = 0; i< 100; i++) { //将对象作为一个整体存入到数据库中 Person *person = [[Person alloc]init]; person.name = [NSString stringWithFormat:@"xiaoming%d",i]; person.age = arc4random()%100; person.id = arc4random(); NSData *data = [NSKeyedArchiver archivedDataWithRootObject:person]; //插入blob 数据一定要使用excuteUpdateWithFormat:, 直接用executeUpdate:会报错的,因为你的数据使用NSLog打印出来会带有<>符号 if (![db executeUpdateWithFormat:@"insert into t_persons(person,age) values(%@,%d)",data,person.age]) { NSLog(@"error:%@",[db lastErrorMessage]); } } //5.修改数据 NSString *updateStr = [NSString stringWithFormat:@"update t_persons set age = 1000"]; if (![db executeUpdate:updateStr]) { NSLog(@"error:%@",[db lastErrorMessage]); } //6. 删除数据 NSString *deleteStr= [NSString stringWithFormat:@"delete from t_persons where id =1;"]; if (![db executeUpdate:deleteStr]) { NSLog(@"error:%@",[db lastErrorMessage]); } //7.查询数据 NSString *querySql = [NSString stringWithFormat:@"select * from t_persons "]; FMResultSet * set = [db executeQuery:querySql]; while (set.next) { NSData *data = [set dataForColumn:@"person"]; // NSLog(@"%@",data); Person *person = [NSKeyedUnarchiver unarchiveObjectWithData:data]; person.id = [set intForColumn:@"id"]; NSLog(@"%@",person); } }
testFMDB2
相关文章推荐
- mysql笔记02 创建高性能的索引
- Nodejs+Extjs+Mongodb开发第一天 Nodejs环境搭建
- oracle case when 语句
- Oracle异机恢复处理
- SQL Server中避免触发镜像SUSPEND的N种方法
- MySQL中由load data语句引起死锁的解决案例
- 详解MySQL中的死锁情况以及对死锁的处理方法
- 数据库Oracle学习资料
- Mysql分区技术 --创建分区表
- java 并发插入数据到oracle
- 自定义SQL函数 实现SPlit字符截取功能
- Oracle数据操作之默认0为' '
- 十步完全理解SQL
- 使用TRY CATCH进行SQL Server异常处理
- mysql 用一个表的一列,去更新另一表的一列
- 使用python操作Memcache、Redis、RabbitMQ、
- 使用Navicat远程管理OpenShift的数据库
- SQL表连接和JDBC初步
- MySQL数据库的优化 【转】
- ORACLE+RAC+ASM环境下添加redo日志组