首页 > 编程知识 正文

android外置sd卡路径,安卓读取本地数据库并加载到列表

时间:2023-05-06 12:55:17 阅读:241673 作者:3209

我们在开发工作中,时时刻刻在与数据打交道,保存数据的方式很多,其中使用数据库来保存及操作数据是最常见的一种方式。 Android内嵌了SQLite数据库,这是一种非常流行的嵌入式及轻型关系型数据库。支持SQL,支持多种操作系统,完全独立运行,没有依赖性。 我们在开发中创建的数据库文件默认路径是:/data/data/项目包名/数据库名。但是有时候,我们需要操作并不在此路径下的数据库文件。 比如我们有时候会把数据库文件放到res/raw目录下,同项目一起打包发布。在res/raw目录下的文件即不在默认的路径下。 通常我们是要先把assert下文件复制到指定文件路径 ,再操作数据库,这样即可。 现在要记录的和上面的都不太一样,我们就把数据库直接放置到SD卡(或其它存储设备)中指定目录,然后直接对该数据库进行读取操作。 通常我们操作数据库是自己写个类extends SQLiteOpenHelper ,然后调用对应的方法操作数据库: public class TestDBHelper extends SQLiteOpenHelper { private static final int VERSION = 1; /** * 在SQLiteOpenHelper的子类当中,必须有该构造函数 */ public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } /** * 第一次创建时执行,通常在这里创建表格 */ @Override public void onCreate(SQLiteDatabase db) { // CREATE TABLE..... } /** * 数据库升级时执行,升级需要改上面对应版本号 */ @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { } }

但是在读写外置数据库时,使用到的是SQLiteDatabase.openOrCreateDatabase(file, factory)方法,第一个参数指的就是数据库文件,第二个参数通常传入null即可。直接上个简单的代码:

public class CustomSQLTools { //数据库存储路径 private String filePath; private SQLiteDatabase database; public SQLiteDatabase openDatabase(Context context) { File jhPath = new File(filePath); //查看数据库文件是否存在 if (jhPath.exists()) { //存在则直接返回打开的数据库 return SQLiteDatabase.openOrCreateDatabase(jhPath, null); } else { Toast.makeText(context, "数据库文件不存在", Toast.LENGTH_SHORT).show(); return null; } }}

在Activity中使用:

public class TestDbActivity extends BaseAct { private TextView test_db; @Override public void setRootView() { setContentView(R.layout.activity_test); test_db = (TextView) findViewById(R.id.test_db); test_db.setOnClickListener(this); } @Override public void widgetClick(View v) { if (v.getId() == R.id.test_db) { //点击直接根据条件查询数据库数据 initSqlAndQuery("1000001739", date); }); } } private void initSqlAndQuery(String queryId, String queryDate) { List<TestDataBean> queryResultList = new ArrayList<>(); CustomSQLTools s = new CustomSQLTools(); SQLiteDatabase database = s.openDatabase(getApplicationContext()); String sql = "select * from VITAL_DATA_BEAN where deviceId = ? and date like?"; Cursor cursor = database.rawQuery(sql, new String[]{queryId, queryDate + "%"}); while (cursor.moveToNext()) { TestDataBeanbean = new TestDataBean(); int deviceId = cursor.getInt(cursor.getColumnIndex("deviceId")); String date = cursor.getString(cursor.getColumnIndex("date")); String rpm = cursor.getString(cursor.getColumnIndex("rpm")); String movementFast = cursor.getString(cursor.getColumnIndex("movementFast")); //设置对应实体数据,从而获取到我们需要的数据 bean.setDeviceId(deviceId); bean.setDate(date); bean.setRpm(rpm); bean.setMovementFast(movementFast); queryResultList.add(bean); } cursor.close(); database.close(); }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。