数据库复习
终端操作:
1、建立db为扩展名的文件
2、建立表:create table 表名(字段名 字段类型);
3、插入记录: insert into 表明(字段名)values(记录名);
4、 查找select * from 表名;
5、删除
Xcode操作:
1、打开数据库:sqlite3_open([_path UTF8String],&_link);
2、建立操作语句:NSString *字符串名字=[NSString stringWithFormat:@“操作语句”];
2.1、查询的话需要建立查询对象:sqlite3_stmt *stmt;
2.2、建立查询语句:同上建立操作语句
2.3、预编译
if(sqlite3_perpare_v2(_link,[字符串名字 UTF8String ],-1(代表查询所有的),&stmt,nil)==SQLITE_OK){
while(sqlite3_step(stmt)==SQLITE_ROW){
NSString *字段名=[NSString stringWithCString:(char *)sqlite3_column_text(stmt,1) encoding:NSUTF8StringEncoding];
NSString *age=[NSString stringWithCString:(char *)sqlite3_column_text(stmt,1) encoding:NSUTF8StringEncoding];
[可变数组名 addObject:@{@“字段名”]]
}
}
3、查找
4、关闭数据库
CoreData
数据持久化储存的最佳方式(不用更改路径)
建立的时候记得勾选CoreDate
比较关键的类:
(1)NSManagedObjercContext(被管理的数据上下文)
(2)NSManagedObjectModel 被管理的数据模型
(3)NSPersistentStoreCoordinator 持久化储存助理
(4)NSManagedObjert 被管理的数据记录
(5)NSFetchRequest 查询语句
(6)NSEntityDescription 实体结构 表格结构
会自动生成文件
1、NSManagedObjectContext 数据上下文
2、NSManagedObjectModel 数据模型
3、NSPersistentStoreCoordinator 储存助理
步骤:
1、建立对象模型
2、生成User对象
3、取到上下文对象
实例化AppDelegate,然后建立一个managedObjectContext来承接AppDelegate的managedObjectContext
4.进行操作
4.1、插入数据
4.1.1实现实体
Student *stu = [NSEntityDescription
insertNewObjectForEntityForName:@"Student"
inManagedObjectContext:_context];
4.1.2插入数据
stu.name = NSString;
int a =[_ageText.text intValue];
stu.age = [NSNumber numberWithInt:a];
4.1.3保存数据
[_context save:nil];
4.2查询数据
4.2.1创建一个获取请求
NSFetchRequest *fet=[[NSFetchRequest alloc]init];
4.2.2设置要查询的实体,通过NSEntityDescription的entityForName的方法来
fet.entity=[NSEntityDescription entityForNama:@“Student” inManagedObjectContext:_context];
4.2.3过滤条件
NSPredicate *pre=[NSPredicate perdicateWithFormat:@“name like %@”,@“*(查询条件)*”];
fet.predicate=pre;
4.2.4执行查询语句
NSArray *array=[_context excuteFetchRequest:fet error:nil];
for (NSManagerObject *obj in array){
NSLog(@“%@”,[obj valueForKey@“name”]);
}
4.3查询数据排序
排序的对象 ascending:YES 升序 ascending:NO 降序
NSSortDescriptor *sort=[[NSSortDescriotor alloc]initWithKey:@”name” ascentding:NO];
NSArray *arrSort=[NSArray arrayWithObject:sort];
fet.sortDesctiptors=arrSort;
4.4删除数据
4.4.1实例化执行请求
NSFetchResqest *reqest=[NSFetchRequest fetchRequestWithEntityName:@“Student”];
4.4.2设置谓词条件
reqest.predicate=[NSPredicate prediateWithFormat:@“name=‘哇哈哈’”];
4.4.3由上下文查询数据
NSArray *arrResu=[_context extcuteFetchRequest:fet error:nil];
4.4.4输出结果
for(Student *stu in result){
NSLog(@“%@”,stu.name);
删除记录
[_context deleteObject:stu];
break;
}
4.4.5通知_context保存数据
if([_context save:nil]){
NSLog(@“删除成功”);
}else{
NSLog(@“删除失败”);
}
4.5修改数据
4.5.1实例化查询请求
NSFetchRequest *request=[NSFetchRequest fetchRequestWithEntityName:@“Student”];
4.5.2设置谓词条件 年龄小于20的名字改成未成年
request.predicate=[NSPredicate predicateWithFormat:@“age>20”];
4.5.3由上下文查询数据
NSArray *resu=[_countext extcuteFetchResqest:request error:nil];
4.5.4输出结果
for(Student *stu in resu){
NSLog(@“%@ %@”,stu.name,stu.age);
更新名字
stu.name=@“老头”;
}
4.5.5通知上下文保存
[_context save:nil];
注:在实际开发中,通常是从表格中选中某一行,获取到对应的NSManagedObject,然后进行修改
如此,变不需查询字节可以修改唯一一条记录了。
87

被折叠的 条评论
为什么被折叠?



