Android 如果读取asserts 中的db文件,并进行查询操作
2016-09-20 11:56
337 查看
前言:前篇已经讲了,如何将excel表格转化成db文件使用。不清楚的朋友可以看下我上篇的文章。然而在这里,主要说下怎么操作assserts目录下的db文件,进行对数据库的查询操作。废话不多说,开始吧!
步骤:
1,在项目中创建一个asserts 目录,有很多人都是手动添加文件夹,命名asserts,其实studio可以直接创建,如图
2,将创建好的.db文件拷贝到asserts目录,需要将db文件通过流的形式写入手机中,便于打开数据库,具体代码如下:
这里是将文件拷贝到手机里,以及查询数据库的操作
步骤:
1,在项目中创建一个asserts 目录,有很多人都是手动添加文件夹,命名asserts,其实studio可以直接创建,如图
2,将创建好的.db文件拷贝到asserts目录,需要将db文件通过流的形式写入手机中,便于打开数据库,具体代码如下:
这里是将文件拷贝到手机里,以及查询数据库的操作
public class DBManager { private String DB_NAME = "demo.db"; private Context mContext; /*选择题的集合*/ public List<Bean> mBeanLists = new ArrayList<Bean>(); public DBManager(Context mContext) { this.mContext = mContext; } //把assets目录下的db文件复制到dbpath下 public SQLiteDatabase DBManager(String packName) { String dbPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/databases/" + DB_NAME; if (!new File(dbPath).exists()) { try { boolean flag = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/databases/").mkdirs(); boolean newFile = new File(dbPath).createNewFile(); try { FileOutputStream out = new FileOutputStream(dbPath); InputStream in = mContext.getAssets().open("demo.db"); byte[] buffer = new byte[1024]; int readBytes = 0; while ((readBytes = in.read(buffer)) != -1) out.write(buffer, 0, readBytes); in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } } return SQLiteDatabase.openOrCreateDatabase(dbPath, null); } //查询选择题 public List<Bean> query(SQLiteDatabase sqliteDB, String[] columns, String selection, String[] selectionArgs) { Bean bean= null; try { String table = "bank"; Cursor cursor = sqliteDB.query(table, columns, selection, selectionArgs, null, null, null); while (cursor.moveToNext()) { String title = cursor.getString(cursor.getColumnIndex("title")); String answer = cursor.getString(cursor.getColumnIndex("answer")); String daan1 = cursor.getString(cursor.getColumnIndex("daan1")); String daan2 = cursor.getString(cursor.getColumnIndex("daan2")); String daan3 = cursor.getString(cursor.getColumnIndex("daan3")); String daan4 = cursor.getString(cursor.getColumnIndex("daan4")); bean= new Bean(); bean.setTitle(title); bean.setAnswer(answer); bean.setDaan1(daan1); bean.setDaan2(daan2); bean.setDaan3(daan3); bean.setDaan4(daan4); mBeanLists.add(bean); } cursor.close(); return mCityLists; } catch (Exception e) { e.printStackTrace(); } return null; }3,在主Activity中怎么去查询数据库,以及展示数据呢?需要注意的是(具体的查询语句,操作语句,耗时操作要放在子线程里处理)
new Thread(new Runnable() { @Override public void run() { DBManager dbManager = new DBManager(NextActivity.this); SQLiteDatabase sqLiteDatabase = dbManager.DBManager("com.yoyo.myapplication"); String[] columns = new String[]{"title", "answer","daan1","daan2","daan3","daan4"}; String selection = "title like '"+"%"+mKey+"%'"; List<City> mCityLists = dbManager.query(sqLiteDatabase, columns, selection, null); Message message = new Message(); message.what = DAN_XUAN; message.obj = mCityLists; handler.sendMessage(message); sqLiteDatabase.close(); } }).start();4,查询完毕,回到handler里面做需求操作
Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case DUI_CUO: List<DuiCuo> mDuiCuoLists = (List<DuiCuo>) msg.obj; Toast.makeText(NextActivity.this, "共" + mDuiCuoLists.size() + "题对错题", Toast.LENGTH_SHORT).show(); DuiCuoAdapter duiCuoAdapter = new DuiCuoAdapter(NextActivity.this, mDuiCuoLists); mLv.setAdapter(duiCuoAdapter); break; case DAN_XUAN: List<City> mDanxuanLists = (List<City>) msg.obj; Toast.makeText(NextActivity.this, "共" + mDanxuanLists.size() + "题选择题", Toast.LENGTH_SHORT).show(); XuanZheAdapter adapter = new XuanZheAdapter(NextActivity.this, mDanxuanLists); mLv.setAdapter(adapter); break; } } };
相关文章推荐
- Android 如果读取asserts 中的db文件,并进行查询操作
- android数据库操作之直接读取db文件
- [android] 从 SDcard 中进行文件的读取操作,含中文和数字
- android数据库操作之直接读取db文件
- 使用C# 怎么生成.db后缀的文件,并且能够使用sql语言进行读取等 操作
- 如何读取配置文件并连接后台数据库,且对数据库进行操作实例(查询或修改等)
- Android 对 SDCARD 卡 上的sqlite3 db 文件进行操作总结
- Android数据库(SqlLite)操作和db文件查看
- 对config文件中的配置进行新增修改删除读取操作
- Android心得4.1--文件的保存与读取及文件的操作模式详解.doc
- Android中使用SDcard进行文件的读取
- Silverlight OOB模式的设置和对文件进行读取和写入的操作
- Android心得4.1--文件的保存与读取及文件的操作模式详解.doc
- 在配置文件中获取数据源,然后在hibernate中用sql语句进行查询操作
- Android中使用SDcard进行文件的读取
- Android对文件的操作(简单的文件读取与写入)
- 不打开文件操作db时,如果遇到和窗体交互,不会提示文档未锁,但同样需要锁定当前文档,代码如下
- 读取文件“grade.txt”中的成绩信息。用冒泡法排序和快排进行排序操作
- php对大文件进行读取操作 转载
- JAVA读取XML文件并利用该文件对数据库进行配置操作