欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发之引用外部数据库操作讲解

程序员文章站 2022-05-04 09:20:54
android 引用外部(一) 有现成的数据库,需要直接引入到项目中使用。 #准备 在开始之前我们要确认现有的数据库的表结构和字段信息等。(注意要看清楚数据库的大小,后面有用) #第一步 将外部数据...

android 引用外部(一)

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

#准备

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

#第一步

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

#第二步

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

代码

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();
}
  }
 }
}

#第三步

这时就可以开始查库了

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