Android初始化本地数据库
16lz
2021-01-26
最近遇到一个需求,一个同学不会搭服务器,但是Android课程设计需要用到很多数据,这样就出现了一个问题,一个内容型的APP,怎么初始化数据库呢?
很容易想到俩种方案,一个是在App中写一个录入内容的页面,用手动的方式录入数据;另一个是在外部建立一个数据库,用数据库工具录入;第一种方案太慢,太麻烦,手动的录入简直就能把人折磨死,所以最后采用了外部建库的方式,用navicate for sqlite 很容易建立了一个数据库
得到了mydb.db数据库,那么怎么导入到Android App中尼,用下面的方案:
1.将mydb.db 放到raw文件夹下
2.编写将mydb.db 复制到sd卡中的工具类并获得SQLiteDatabase 的工具类
public class DBUtil { private static SQLiteDatabase database; public static final String DATABASE_FILENAME = "myb.db"; public static final String PACKAGE_NAME = "com.mobilexu.test"; public static final String DATABASE_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME; public static SQLiteDatabase openDatabase(Context context) { try { String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME; File dir = new File(DATABASE_PATH); if (!dir.exists()) { dir.mkdir(); } if (!(new File(databaseFilename)).exists()) { InputStream is = context.getResources().openRawResource(R.raw.mydb); FileOutputStream fos = new FileOutputStream(databaseFilename); byte[] buffer = new byte[8192]; int count = 0; while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count); } fos.close(); is.close(); } database = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null); return database; } catch (Exception e) { e.printStackTrace(); } return null; } }
3.在数据中查询的时候:直接用工具类获得SQLiteDatabase来查询
public static List<Season> findAllSeason(Context context) { List<Season> seasons = new ArrayList<Season>(); SQLiteDatabase myDateBase = DBUtil.openDatabase(context); String sql = "select * from Season"; try { Cursor c = myDateBase.rawQuery(sql, null); c.moveToFirst(); while (!c.isAfterLast()) { Season season = new Season(); season.setId(c.getInt(c.getColumnIndex("id"))); season.setName(c.getString(c.getColumnIndex("name"))); seasons.add(season); c.moveToNext(); } if (!c.isClosed()) { c.close(); } if (myDateBase.isOpen()) { myDateBase.close(); } } catch (Exception e) { e.printStackTrace(); } return seasons; }
就可以直接查询。
更多相关文章
- 1.Android查看手机内部储存目录及数据库文件之通过模拟器Monitor
- iOS自动化测试(一)-技术方案、环境配置与疯狂踩坑
- 【android】个人推崇的数据库升级方式
- Android(安卓)sdk content loader 0%的解决方案
- Android(安卓)Studio导入项目gradle报错,解决方案
- Android(安卓)Studio打不开,无法启动,无反应的解决方案
- Android实现一个简单的SQLite数据库的增删改查
- Android(安卓)Studio JNI javah遇到的问题
- 天天记录 - 双休安装双系统并搭建环境的悲惨遭遇