android开发中存储数据的三种方式
一、 使用文件存储数据
使用文件存储数据是把数据保存成一个文件存在手机或者android 设备当中,需要的时候程序打开文件读取里面的资料。
写入代码如下:
public void saveData(String data){
FileOutPutStream out = null;
BufferedWtriter writer = null;
try{
out = openFileOutPut("fileName",Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutPutStreamWriter(data));
writer.write(data);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(writer !=null)
{
write.cloes();
}
}catch(Exception e2){
e2,printStackTrace();
}
}
}
总结一下,3个步骤,新建文件,新建数据流写入数据,关闭数据流。其中openFiileOutPutA方法,第一个参数是文件名,第二个参数是文件的操作模式,主要有两种模式可选,MODE_PRIVATE 和 MODE_APPEND。其中MODE_PRIVATE 是默认的操作模式,表示当指定同样文件名的时候,所写入的内容会覆盖原文件的内容。而MODE_APPEND则表示追加内容。不会覆盖。
读取文件内容代码:
public String getDataFromFile(){
String temp = "";
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try{
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
while((temp = reader.readline()) != null ){
content.append(temp);
}
}catch(IOException e){
e.printStackTreac();
}finally{
if(reader != null){
try{
reader.close();
}catch(Exception e2){
e2.printStackTrace();
}
}
}
return content.toString();
}
二 使用SharedPreferences 保存数据
使用SharedPreferences实际上也是将数据生成文件保存到手机当中,不过比起直接用文件,SharedPreferences是有格式的,保存成键值对的形式。
用SharedPreferences 比保存成文件更加方便。
代码如下:
public void savaDataBySharedPreferences(String name, int age){
SharedPreferences.Editor editor = getSharedPreferences("data2",MODE_PRIVATE).edit();
editor.putString("name", name);
editor.putInt("age", age);
editor.commit();
}
public void getDataBySharedPreferences(){
SharedPreferences getdata = getSharedPreferences("data2", MODE_PRIVATE);
if(getdata != null){
String name = getdata.getString("name", "");
int age = getdata.getInt("age", 0);
}
}
三 使用sqlite数据库保存数据
android中内置了sqlite数据库,也提供了api支持,对于使用其他数据库的开发者来说,sqlite使用起来也应该比较熟悉。
给出代码如下:
自定义类 MyDatabaseHelper
public class MyDatabaseHelper extends SQLiteOpenHelper{
public static final String CREATE_STUDENTS = " create table students number integer primary key autoincrement, name text";
private Context mContext;
public MyDatabaseHelper(Context context, String name, CursorFactory, int version){
super(context, name, factory, version);
mContext= context;
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(CREATE_STUDENTS);
Toast.makeText(mContext,"Create db successed", 1000).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL("drop table if exists students");
}
}
MainActivity中有关数据库操作的部分
private MyDatabaseHelper mydb;
pirvate SQLiteDatabase db;
private ContentValues values;
public void createDatabase(){
if(mydbHelper == null){
mydbHelper = new MyDatabaseHelper(this, "Students.db", null, 1);
mydbHelper.getReadableDatabase;
}
}
public void UpdataDB(int version){
mydbHelper = new MyDatabaseHelper(this, "Students.db", null, version);
}
@Override
public void onClick(View v){
switch(v.getId()){
case R.id.btnAddData:
valuse.put("name", myeditText.getText().toString());
db.insert("students", null, values)
break;
case R.id.btnDeleteData;
db.delete("students","name = ",new String[]{"123456"});
Toast.makeText(this, "delete successed", 1000).show();
break;
case R.id.btnChangeData:
values.put("name", myeditText.getText().toString());
db.update("students", values, "name = ?", new String[]{"aa"});
break;
case R.id.btnShowData:
Cursor cursor = db.query("students", null, null, null, null, null, null);
if(cursor.moveToFirst()){
do{
}while(cursor.moveToNext());
}
break;
}
}