您的位置:首页 > 移动开发 > Android开发

安卓数据存储方式

2013-06-29 23:19 267 查看
Log.i()

安卓数据存储--三种基本方式

1  通过SharedPreferences存储

SharedPreferences:负责读取程序的Preferences数据

保存的是MAP类型,存储简单地数据

步骤:

getSharedePreferences(String name,int MODE);

存储:

SharedPreferences setttings =getSharePreferences(SETTING_INFOS,0)

setttings.edit()
.putString(NAME,text1.getText().toString())
.putString(PASSWORD,text2.getText().String())
.commit();

提取:

SharedPreferences settings=getSharedPreferences (SETTING_INFOS,0)

String name=settings.getString(NAME,"");

String passwd=settings.getString(PASSWORD,"");

text1.setText(name);

text2.setText(passwd);

*********************************************************************************

*********************************************************************************

2 文件存储

FileInputStream和FileOutPutStream

Context提供了两个方法:

openFileInput(String fileName):打开文件对应的输入流

openFileOutput(String fileName,int mode):打开对应的输出流

还有其他方法访问文件夹:

getDir(String name,int MODE);

getFilesDir();

deleteFile(String name);

mode:

MODE_PRIVATE:当前程序可用

MODE_APPEND: 追加模式写入

MODE_WORLD_READABLE:其他程序可读

MODE_WORLD_WRITEBLE:其他程序可写

示例:

public FileTest extends Activity{

@Override 

public void onCreate(Bundle savedInsatnceState)
{
super.onCreate(savedInstancestate);
setCotentView(R.layout.main);
BUtton read=(Button)findViewById(R.id.read);
Button write=(Button)findViewById(R.id.write);
final EditText edit1=(EditText)findViewById(R.id.edit1);
final EditText edit2=(EditText)findViewById(R.id.edit2);

write.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
write(edit.getText.toString());
edit1.setText("");
}
});

read.setOnClickListener(new OnCilckListener{
public void onClick(View v){
edit2.setText(read());
}
});
}
private String read(){

try{

FileInPutStream fis=openFileInput(FILE_NAME);

byte[] buff=new byte[1024];

int hasrad=0;

StringBuilder sb=new SreingBuilder("");

while((hasread=fis.read(buff))>0){

sb.append(new String(buff,0,hasread));

}

return sb.toString();

}

}

private void write(String content){

try{

FileOutPutStream fos=openFileOutput(FILE_NAME,MODE_APPEND);

printSream  ps=new printStream(fos);

pa.println(content);

ps.close();

}catch(Exception e){e.printStackTrace();}

}

}

******************************************************************************

******************************************************************************

3 数据库存储

SQLite数据库:

SQLiteDatabase:

android自带的一个数据路,底层是一个数据库文件。作用类似于JDBC(java databse connectivity)的Connnection接口

既可以使用sql语句操作管理数据库,也可以使用对象示例中定义的一些方法:

创建数据路对象:

static SQLiteDatabase openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory);

static SQLiteDatabase openDatabase(String path,SQLiteDatabase.CursorFactory factory,int flags);

操作数据库:

//使用sql语句

execSQL(String sql);

execSQL(String sql,Obeject[] bindArgs);
//返回一个Cursor对象

//使用方法

insert,update,delete,query,rawquery

查询方法都返回指针类-Cursor

该类的对象有几个移动指针的函数:

move(int offset); //移动到指定行

boolean moveToFirst(); //

boolean moveToLast(); //

boolean moveToNext(); //移动到下一行

boolean moveToPrevious();

boolean moveToposition(int position);

SQLiteOpenHelper:

用于管理数据库的工具类

常用方法:

SQliteDatabase getReadableDatabase();

SQliteDatabase et writableDatabese();

onCreate();

onUpdate();

close();

示例:

public class MyDatabaseHelper extends SQLiteDatabaseHelper

{

final String CREATE_TABLE_SQL="create table dict(_id integer primary key antoincrement,word,detail)";

public MyDatabaseHelper(Context context,String name,int version){

super(context,name,null,version);

db.execSQL("insert into dict values(null,?,?)",new String[]{word,detail});

}

@Override

}

//定义一个继承了DatabseHelper类的MyDatabseHelper类

//第一次调用getW/RDatabse是自动调用onCreate方法,所以重写了onCreate方法

public Dict extends Activity

{

MyDatabaseHelper dbHelper;

Button inseart=null;

Button search=null;

public void onCreate(Bundle savedInsatnceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

dbHelpre=new MyDatabaseHelper(this,"myDict.db",1);

insert=(BUtton)findVIewById(R.id.insert);

serach=(Button)findVeiwById(R.id.serach);

insert.setOnClickLisener(new OnClickListener(){

@Override

public void onClick(View source){

String word=((EditView)findViewById(R.id.wrod)).getText().toString();

String detail=((EditVIew)findViewById(R.id.detail))getText.toString();

insertData(dbHelper.getReadableDatabase(),word,detail);

Toast.makeText(Dict.this,"添加成功",Toast.SHORT).show();

}

});

serach.setOnClickLisetner(new OnCLickListener(){

@Override

public void onClick(View v){

String key=(EditView)findViewById(R.id.key).getText().toString();

Cursor cursor=dbHelper.getReadableDatabase().rawQuery("select * from dict where word like ? or detail like ?",new String[]{"%"+key+"%","key"+key"%"});

Bundle bundle=new Bundle();

data.putSerializable("data",converCursorToList(cursor));
//data为键值

Intent intent=new Intent(Dict.this,ResultActivity.class);

intent.putExtras(data);

startActivity(intent);

}

});

}

protected ArrayList<Map<String,String>> coverCursorToList(Cursor cursor){

ArrayList<Map<String,String>>result=new ArrayList<Mop<String,String>>();

while(cursor.moveToNext()){

Map<String,String>map=new HashMap<String,String>();

map.put("word",cursor.getString());

map.put("detail",cursor.getString());

}

return result;

}

private void insertData(SQLiteDatabase db,String word,String detail){

db.execSQL("insert into dict values(null,?,?),new String[](word,detail);")

}

@Override

public void onDestroy{

super.onDestroy();

if(dbHelper!=null){dbHelper.close();}

}

}

//ResultActivty

pubic class extends Activity

{

@Override

public void onCreate(Bundle InstanceState){

super.onCreate(Bundle InstanceState);

setContentView(R.layout.popup);

LisView list=(ListView)findVIewById(R.id.show);

Bundle data=new BUndle();

data=intent.getExtras();

List<Map<String,String>>list=(List<Map<String,String>>)dara.getSerializable("data");

SimpleAdapter adapter=new SimpleAdapter(ResultActivity,list,R.layout.line,new String[]{"word","detail"},new int[]{R.id.word,R.id.detail});

list.setAdapter(adapter);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 数据存储