android查询数据库中包含某个参数,AndroidStudio 中查看获取MD5和SHA1值以及如何查看手机应用信息以及读取*.db数据库里面数据...

该博客介绍了在Android应用启动时,从assets目录读取数据库文件并写入SDcard的方法。通过新建SQLdm类实现文件复制与数据库打开,还展示了在DatabActivity类中获取数据库数据,查询testid=1的数据并显示name字段的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们就是要在应用启动的时候读取assets目录下的数据库,然后把test.db写入SDcard的data/data/com.datab.cn路径下边。

我们首先新建一个类:SQLdm.java:

[java] view plain copypackagecom.datab.cn;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importandroid.content.Context;importandroid.content.res.AssetManager;importandroid.database.sqlite.SQLiteDatabase;importandroid.util.Log;/*** 这个类就是实现从assets目录读取数据库文件然后写入SDcard中,如果在SDcard中存在,就打开数据库,不存在就从assets目录下复制过去

*@authorBig_Adamapple

**/

public classSQLdm {//数据库存储路径

String filePath = "data/data/com.datab.cn/test.db";//数据库存放的文件夹 data/data/com.main.jh 下面

String pathStr = "data/data/com.datab.cn";

SQLiteDatabase database;publicSQLiteDatabase openDatabase(Context context){

System.out.println("filePath:"+filePath);

File jhPath=newFile(filePath);//查看数据库文件是否存在

if(jhPath.exists()){

Log.i("test", "存在数据库");//存在则直接返回打开的数据库

return SQLiteDatabase.openOrCreateDatabase(jhPath, null);

}else{//不存在先创建文件夹

File path=newFile(pathStr);

Log.i("test", "pathStr="+path);if(path.mkdir()){

Log.i("test", "创建成功");

}else{

Log.i("test", "创建失败");

};try{//得到资源

AssetManager am=context.getAssets();//得到数据库的输入流

InputStream is=am.open("test.db");

Log.i("test", is+"");//用输出流写到SDcard上面

FileOutputStream fos=newFileOutputStream(jhPath);

Log.i("test", "fos="+fos);

Log.i("test", "jhPath="+jhPath);//创建byte数组 用于1KB写一次

byte[] buffer=new byte[1024];int count = 0;while((count = is.read(buffer))>0){

Log.i("test", "得到");

fos.write(buffer,0,count);

}//最后关闭就可以了

fos.flush();

fos.close();

is.close();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();return null;

}//如果没有这个数据库 我们已经把他写到SD卡上了,然后在执行一次这个方法 就可以返回数据库了

returnopenDatabase(context);

}

}

}然后,我们在DatabActivity.java中获得数据库中的数据:

[java] view plain copypackagecom.datab.cn;importandroid.app.Activity;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;importandroid.os.Bundle;importandroid.widget.TextView;public class DatabActivity extendsActivity {/**Called when the activity is first created.*/@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.main);//打开数据库输出流

SQLdm s = newSQLdm();

SQLiteDatabase db=s.openDatabase(getApplicationContext());

TextView textv=(TextView) findViewById(R.id.textv);//查询数据库中testid=1的数据

Cursor cursor = db.rawQuery("select * from testbiao where testid=?", new String[]{"1"});

String name= null;if(cursor.moveToFirst()){

name= cursor.getString(cursor.getColumnIndex("name"));

}//这是一个TextView,把得到的数据库中的name显示出来.

textv.setText(name);

cursor.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值