Android开发之引用外部数据库操作讲解,android开发环境搭建

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

394

主题

1054

帖子

837

安币

手工艺人

发表于 2018-9-21 16:21:03 | 显示全部楼层 |阅读模式

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 等。


0

主题

9263

帖子

2054

安币

Android大神

Rank: 6Rank: 6

发表于 2018-9-21 16:37:55 | 显示全部楼层
感谢分享,安卓巴士有你更精彩:lol

1

主题

9262

帖子

2900

安币

Android大神

Rank: 6Rank: 6

发表于 2018-9-21 17:38:56 | 显示全部楼层
每次我都积极回帖的,想要安币~

11

主题

9464

帖子

-23

安币

QQ游客

推广达人

发表于 2018-9-21 18:20:03 | 显示全部楼层
楼主威武,以后多发干货,多办活动~!

579

主题

1330

帖子

3255

安币

手工艺人

发表于 2018-9-21 19:24:47 | 显示全部楼层
感谢大神~

443

主题

1207

帖子

1947

安币

手工艺人

发表于 2018-9-21 20:52:08 | 显示全部楼层
楼主是好人,回个帖会有安币吗?

20

主题

9302

帖子

2330

安币

Android大神

Rank: 6Rank: 6

发表于 2018-9-21 21:32:20 | 显示全部楼层
支持楼主,支持安卓巴士!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

扫一扫关注我们

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