安卓数据存储方式

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);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值