【问题标题】:How do I create an SQLite database in Android by importing from an SQL file?如何通过从 SQL 文件导入在 Android 中创建 SQLite 数据库?
【发布时间】:2011-09-19 23:25:43
【问题描述】:

我有一个包含 SQL CREATE TABLEINSERT 语句的大文本文件。如何在SQLiteOpenHelperonCreate方法中导入这个文件?

或者,是否有直接使用二进制数据库文件的可接受方式?

我需要它与 Android 1.6 兼容。

【问题讨论】:

    标签: android sqlite import


    【解决方案1】:

    我必须解决同样的问题。找不到直接的方法,所以我将文件放入 res/raw 目录并使用 openRawResource 获取 InputStream 。然后我读了几行,直到一行以; 结尾。然后我将语句传递给 sqlite 数据库。

    希望其他人提出更好的方法,但我想我会添加我最终这样做的方式。

    【讨论】:

      【解决方案2】:

      按照史蒂夫·普伦蒂斯的回答。这是我的实现:

      res/raw 中的 mydb.sql 文件

      CREATE TABLE table1(col1 INTEGER PRIMARY KEY, col2 TEXT);
      CREATE TABLE table2(col1 INTEGER PRIMARY KEY, col2 TEXT, col3 INTEGER);
      

      MyClass.java

          InputStream inputStream = context.getResources().openRawResource(R.raw.mydb);
      
          String queries = "";
          try {
              queries = IOUtils.toString(inputStream);
          } catch (IOException e) {
              Util.logException(e);
          }
      
          for (String query : queries.split(";")) {
              db.execSQL(query);
          }
      

      【讨论】:

        【解决方案3】:

        在 SQLiteOpenHelper onCreate() 方法中,您可以只使用db.execSQL(...),但这取决于您的“文本文件”的结构(以及文件的大小)。

        或者,您可以在您的应用中“发布”一个 SQLite 数据库 - 请参阅此链接以提供一些想法...

        Using your own SQLite database in Android applications

        【讨论】:

        【解决方案4】:

        导入您自己的 sqlite db 文件的问题在于,您必须确保创建文件的引擎版本与正在安装 db 的 Android 设备上的引擎版本相匹配。通过运行 SQL 脚本文件,您可以确保使用实际安装在 Android 设备上的引擎创建数据库。

        【讨论】:

          猜你喜欢
          • 2015-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-01
          • 2014-08-18
          • 1970-01-01
          • 1970-01-01
          • 2023-03-25
          相关资源
          最近更新 更多