当前位置: 编程技术>移动开发
本页文章导读:
▪技术点之数据储存 技术点之数据存储
很多时候我们需要存储配置文件或者存储和读取一些用户数据,还有一些共享文件数据。和存储一些大型文件。第一File最开始我想的是使用创建一个文件用于存储File即.........
▪ Core Data数据持久化的施用 Core Data数据持久化的使用
CoreData 是ios中用来对数据做持久化的一个框架,它对sqlite进行了封装,使我们不需要学习数据库知识,也不要写SQL语句就能将数据保存到数据库。下面来介绍CoreData.........
▪ 【互动出版网】十月份新书榜活动 【互动出版网】10月新书榜活动
【互动出版网】10月新书榜活动参加互动出版网写书评,得积分,换赠书活动。现在即可参加活动哦。
活动详细方案以及规则请点击此链接详细了解》》》
......
[1]技术点之数据储存
来源: 互联网 发布时间: 2014-02-18
技术点之数据存储
很多时候我们需要存储配置文件或者存储和读取一些用户数据,还有一些共享文件数据。和存储一些大型文件。
第一File
最开始我想的是使用创建一个文件用于存储File即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
第二SharedPreferences同时过SharedPreferences方法来进行存储和读取文件,SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
使用方法是在例如在MusicFind类中存储文件内容
在使用这个文件的时候,调用方法从music文件中得到
第三Sqlite
下面还有一种方法,使用数据库,在android中使用的数据库一般是Sqlite,下面我讲解一下Sqlite的使用方法,内容参考http://www.cnblogs.com/wisekingokok/archive/2011/09/13/2174484.html
sqlite也是微型的数据存储方式,但数据库的使用比较麻烦一些,需要创建数据库,创建表格等。下面是使用sqlite的步骤第一创建数据库
第二创建表,插入数据
插入数据代码
通过下面方法查询数据
数据库的使用在更新和查询数据上比较方便,如果我们需要一个数据,只需要一个查询语句可以直接查询自己的数据,而不需要像SharedPreferences得到一个完整对象。
这三种存储方式可以结合还用,我们使用SharedPreferences来存储用户配置文件,当用户启动程序时,更新配置。使用File来存储大型数据文件,比分说音频文件,视频文件等。使用Sqlite来存储用户数据,一个对象的属性数值。
很多时候我们需要存储配置文件或者存储和读取一些用户数据,还有一些共享文件数据。和存储一些大型文件。
第一File
最开始我想的是使用创建一个文件用于存储File即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
FILENAME="testpath.txt";
private String read() { try { FileInputStream inputStream = openFileInput(FILENAME); byte[] b = new byte[inputStream.available()]; inputStream.read(b); return new String(b); } catch (Exception e) { } return null; } private void write(String content) { try { FileOutputStream fos = openFileOutput(FILENAME, MODE_APPEND); fos.write(content.getBytes()); fos.close(); } catch (Exception e) { } }通过file方式进行文件存储,一般存储大数据量的文件,比方说音频文件,视频文件等。
第二SharedPreferences同时过SharedPreferences方法来进行存储和读取文件,SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
public static void SaveConfig1(Context context, Music music) { SharedPreferences share = context.getSharedPreferences("music", Context.MODE_WORLD_WRITEABLE); Editor editor = share.edit(); editor.putString("music_path", music.Music_Path); editor.putString("music_name", music.Music_Name); editor.commit(); } public static Music LoadConfig1(Context context) { SharedPreferences share = context.getSharedPreferences("music", Context.MODE_WORLD_WRITEABLE); Music music = new Music(); music.Music_Path = share.getString("music_path", "无"); music.Music_Name = share.getString("music_name", "无"); return music; }
Class Music{ private String Music_path =""; private String Music_name =""; public void SetMusic_path(String path){ this.Music_path = path; } public String GetMusic_path(){ return this.Music_path; } public String SetMusic_name(String name){ this.Music_name = name; } public String GetMusic_name(){ return Music_name; } }
使用方法是在例如在MusicFind类中存储文件内容
Class MusicFind extends Activity{ SaveConfig1(getContext,music); ... }
在使用这个文件的时候,调用方法从music文件中得到
Class MusicPlay{ Music musics=null; musics=LoadConfig1(getContext); ... }文件music存储的位置是在/date/data/项目名称/music下。一般使用SharedPreferences进行存储配置数据。如用户的一些软件特性设置。
第三Sqlite
下面还有一种方法,使用数据库,在android中使用的数据库一般是Sqlite,下面我讲解一下Sqlite的使用方法,内容参考http://www.cnblogs.com/wisekingokok/archive/2011/09/13/2174484.html
sqlite也是微型的数据存储方式,但数据库的使用比较麻烦一些,需要创建数据库,创建表格等。下面是使用sqlite的步骤第一创建数据库
SQLiteDatabase db = this.openOrCreateDatabase("test_db.db", Context.MODE_PRIVATE, null); SQLiteDatabase db2 = SQLiteDatabase.openOrCreateDatabase("/data/data/com.test/databases/test_db2.db3", null);
第二创建表,插入数据
db.execSQL("create table tab(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL)");
插入数据代码
ContentValues values = new ContentValues(); for(int i=0;i<10;i++){ values.put("name", "test" + i); db.insert("tab", "_id", values); }
通过下面方法查询数据
Cursor c = db.query("tab", null, null, null, null, null, null); c.moveToFirst(); while(!c.isAfterLast()) { int index = c.getColumnIndex("name"); Log.d("SQLite", c.getString(index)); c.moveToNext(); } c = db.rawQuery("select * from tab", null); c.moveToFirst(); while(!c.isAfterLast()) { int index = c.getColumnIndex("name"); Log.d("SQLite", c.getString(index)); c.moveToNext(); }
数据库的使用在更新和查询数据上比较方便,如果我们需要一个数据,只需要一个查询语句可以直接查询自己的数据,而不需要像SharedPreferences得到一个完整对象。
这三种存储方式可以结合还用,我们使用SharedPreferences来存储用户配置文件,当用户启动程序时,更新配置。使用File来存储大型数据文件,比分说音频文件,视频文件等。使用Sqlite来存储用户数据,一个对象的属性数值。
[2] Core Data数据持久化的施用
来源: 互联网 发布时间: 2014-02-18
Core Data数据持久化的使用
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
person.personId = @10002;
person.age = @29;
person.name = [NSString stringWithFormat:@"jack"];
NSError *error = nil;
BOOL ret = [self.managedObjectContext save:&error];
if (ret) {
NSLog(@"保存成功!");
} else {
NSLog(@"error");
}
6.删除一个实体模型对象
//删除
- (void)modifyPerson {
NSEntityDescription *entifyDesc = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *fetchReqeust = [[NSFetchRequest alloc] init];
[fetchReqeust setEntity:entifyDesc];
//查询年龄大于30的实体person对象
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.age=30"];
[fetchReqeust setPredicate:predicate];
//查询出来的person对象数组
NSArray *persons = [self.managedObjectContext executeFetchRequest:fetchReqeust error:nil];
//遍历删除
for (Person *p in persons) {
[self.managedObjectContext deleteObject:p];
}
}
7. 查询
//根据条件查询数据
- (void)queryPerson {
NSEntityDescription *entifyDesc = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
//查询对象
NSFetchRequest *fetchReqeust = [[NSFetchRequest alloc] init];
[fetchReqeust setEntity:entifyDesc];
//查询条件
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.age>40 && self.personId>10015"];
[fetchReqeust setPredicate:predicate];
//排序,按age降序排列
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
[fetchReqeust setSortDescriptors:@[sortDesc]];
//查询
NSArray *persons = [self.managedObjectContext executeFetchRequest:fetchReqeust error:nil];
for (Person *p in persons) {
NSLog(@"name=%@,age=%@,id=%@",p.name,p.age,p.personId);
}
}
CoreData 是ios中用来对数据做持久化的一个框架,它对sqlite进行了封装,使我们不需要学习数据库知识,也不要写SQL语句就能将数据保存到数据库。下面来介绍CoreData的如何使用。
1. 新建一个项目,勾选使用Core Data, 新建后需要导入:CoreData.framework
2.新建项目后,AppDelegate类会生成三个属性
[cpp] view plaincopy
这三个对象操作数据会用的到。
3.新建一个实体对象
4. 创建一个类与实体对象关联
5. 保存一个实体模型对象
[java] view plaincopy
6.删除一个实体模型对象
[cpp] view plaincopy
7. 查询
[cpp] view plaincopy
参考资料:
Core Data Reference
API listing for the Core Data classes
http://developer.apple.com/documentation/Cocoa/Reference/CoreData_ObjC/index.html
NSPredicate Reference
API listing for NSPredicate
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSPredicate.html
[3] 【互动出版网】十月份新书榜活动
来源: 互联网 发布时间: 2014-02-18
【互动出版网】10月新书榜活动
【互动出版网】10月新书榜活动
参加互动出版网写书评,得积分,换赠书活动。
现在即可参加活动哦。
活动详细方案以及规则请点击此链接详细了解》》》
最新技术文章: