如何使用数据库助手类在android中使用现有数据库

时间:2015-04-07 02:56:47

标签: android

我有一个我已经创建的现有数据库,我想用我的Android应用程序。我已将该文件夹放入我的assets文件夹中,并且还具有DataBaseHelper.java文件。现在我想检索数据然后在我的一个活动中显示该数据,例如,以listView或我可以显示数据的任何其他方式。那么有谁知道我怎么做到这一点?为实现这一目标,接下来的步骤是什么?

3 个答案:

答案 0 :(得分:0)

以下是一些让您前进的提示。

  • 在您的数据库文件上运行以下SQL:
CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US');
INSERT INTO "android_metadata" VALUES ('en_US');
  • 将您的数据库(SQLite文件,我假设)放入assets /
  • 然后我建议将应用程序中的文件复制到/data/data/your.package.name/databases/。以下是执行此操作的示例代码:
/**
 * Copies your database from your local assets-folder
 * to the just created empty database in the
 * system folder, from where it can be accessed and handled.
 * This is done by transfering bytestream.
 **/
private void copyDatabase() throws IOException{

  //Open your local db as the input stream
  InputStream myInput = context.getAssets().open(DB_NAME);

  // Path to the just created empty db
  String outFileName = DB_PATH + DB_NAME;

  //Open the empty db as the output stream
  OutputStream myOutput = new FileOutputStream(outFileName);

  //transfer bytes from the inputfile to the outputfile
  byte[] buffer = new byte[1024];
  int length;
  while ((length = myInput.read(buffer))>0){
      myOutput.write(buffer, 0, length);
  }

  //Close the streams
  myOutput.flush();
  myOutput.close();
  myInput.close();
 }

然后,您可以在DataBaseHelper中打开生成的文件。

答案 1 :(得分:0)

最简单的方法是使用以下项目

  

https://github.com/jgilfelt/android-sqlite-asset-helper

另一种方法是自己管理文件操作,将数据库从资产复制到正确的位置,并确保打开数据库文件的正确权限。

答案 2 :(得分:0)

您可以在资源

下尝试复制数据库的以下网址
http://stackoverflow.com/questions/5945196/database-not-copying-from-assets