Android开发之引用外部数据库操作讲解,android开发工具

6
回复
864
查看
[复制链接]

329

主题

994

帖子

714

安币

手工艺人

发表于 2018-10-8 11:47:35 | 显示全部楼层 |阅读模式

Android 引用外部数据库(一)

        有现成的数据库,需要直接引入到项目中使用。


#准备

        在开始之前我们要确认现有的数据库的表结构和字段信息等。(注意要看清楚数据库的大小,后面有用)


#第一步

        将外部数据库拷贝到项目中的 assets文件夹中,如图


#第二步

        在你要使用数据库之前将数据库拷贝到 /data/data/包名/databases/ 目录下。


代码
[Java] 查看源文件 复制代码
public static void copyDbFile(Context context, String db_name) {
 InputStream in = null;
 FileOutputStream out = null;
 //String path = "/data/data/" + context.getPackageName() + "/databases/";
 File filePath = context.getDatabasePath(db_name);
 //spUtils 是为了防止多次拷贝
 if (!SharePreferenceUtils.getBoolean(GlobalContent.COPE_SUCCESS,false)){
  try {
in = context.getAssets().open(db_name); // 从assets目录下复制
out = new FileOutputStream(filePath);
int length = -1;
byte[] buf = new byte[1024];
while ((length = in.read(buf)) != -1) {
 out.write(buf, 0, length);
}
out.flush();
SharePreferenceUtils.putBoolean(GlobalContent.COPE_SUCCESS,true);
  } catch (Exception e) {
e.printStackTrace();
  } finally {
try {
 if (in != null) in.close();
 if (out != null) out.close();
} catch (IOException e1) {
 e1.printStackTrace();
}
  }
 }
}

#第三步

        这时就可以开始查库了

[Java] 查看源文件 复制代码
SqlLiteHelper sqlLiteHelper = new SqlLiteHelper(getContext(), "mySql.db", null, 1);
SQLiteDatabase readableDatabase = sqlLiteHelper.getReadableDatabase();

try {
  Cursor query = readableDatabase.query("message", new String[]{"_id", "message"}, null, null, null, null, null, limit);
  boolean b = query.moveToFirst();
  while (!query.isLast()) {
int id = query.getInt(query.getColumnIndex("_id"));
String message = query.getString(query.getColumnIndex("message"));
mDataList.add(new LoveMessageBean(id, message));
query.moveToNext();
  }
  query.close();
  Logger.i("mDataList : "+ mDataList.size());
 }catch (Exception e){
  UiUtils.showToast(getContext(),"error");
 }

        到这里已经成功的把外部数据库拷贝到项目中,并且开始 CRUD 了。

        以上的方法,是做简单也是最原始的方法,之后会尝试使用第三方的工具来查询,如 GreenDao LitePal 等。


400

主题

1132

帖子

322

安币

手工艺人

发表于 2018-10-8 11:56:54 | 显示全部楼层
支持楼主,支持安卓巴士!

14

主题

9476

帖子

4723

安币

码皇(巴士元老)

Rank: 8Rank: 8

发表于 2018-10-8 12:50:26 | 显示全部楼层
支持楼主,支持安卓巴士!

28

主题

1万

帖子

1363

安币

Android大神

小白

Rank: 6Rank: 6

发表于 2018-10-8 13:42:46 | 显示全部楼层
帮帮顶顶!!

451

主题

1188

帖子

1942

安币

手工艺人

发表于 2018-10-8 14:38:56 | 显示全部楼层
安卓巴士是个不错的网站,我来顶个贴~

394

主题

1051

帖子

842

安币

手工艺人

发表于 2018-10-8 15:40:38 | 显示全部楼层
楼主是好人,回个帖会有安币吗?

2

主题

9494

帖子

2469

安币

Android大神

Rank: 6Rank: 6

发表于 2018-10-8 16:32:01 | 显示全部楼层
不错不错,楼主辛苦了。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )