您的位置:首页 > 数据库

iOS Sqlite3 Demo 及 FMDB Demo

2016-01-22 01:54 423 查看
  本文是主要实现了三个函数:

  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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: