【问题标题】:import external db into app and use it in android将外部数据库导入应用程序并在android中使用
【发布时间】:2012-05-29 23:24:08
【问题描述】:

我是安卓开发新手。现在我正在尝试使用 sqlite db。 我使用 sqlite manager 创建了一个数据库 sqlite 文件。 我通过 /data/data/packagename/dbname 将它导入到项目中,它在模拟器中运行良好,但如果我在设备中发布应用程序崩溃,我不知道会发生什么以及为什么会发生。有什么建议吗?

【问题讨论】:

  • 发布代码,展示如何将其从 Assets 传输到数据目录,以及显示错误的 logcat。
  • 你能提供崩溃报告吗
  • 我在 Assets 文件夹中有数据库文件。我不知道如何使用它或将其传输到数据目录。但它适用于模拟器。是否有任何将数据库传输到数据目录并访问它的教程。请记住我已经创建了 db 文件,我只能使用它,而不是新的。

标签: java android database sqlite import


【解决方案1】:

您不能以这种方式使用外部数据库。当您将它导入您的项目时,这并不意味着它在之后的所有设备中都可用(假设您为此使用了 DDMS)。这意味着 DB 仅适用于该特定模拟器。按照以下链接了解如何将外部数据库添加到您的应用程序..

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

【讨论】:

    【解决方案2】:
    private void StoreDatabase() {
         File DbFile=new File("data/data/packagename/DBName.sqlite");
         if(DbFile.exists())
         {
             System.out.println("file already exist ,No need to Create");
         }
         else
         {
             try 
             {
                 DbFile.createNewFile();
                 System.out.println("File Created successfully");
                 InputStream is = this.getAssets().open("DBName.sqlite");
                 FileOutputStream fos = new FileOutputStream(DbFile);
                 byte[] buffer = new byte[1024];
                    int length=0;
                    while ((length = is.read(buffer))>0)
                    {
                    fos.write(buffer, 0, length);
                    }
                 System.out.println("File succesfully placed on sdcard");
                    //Close the streams
                    fos.flush();
                    fos.close();
                    is.close();
             }
             catch (IOException e)
             {
                 e.printStackTrace();
             }
       }    
        }
    

    【讨论】:

    • 我在资产文件夹中有一个数据库。但是如何在我的应用程序中实现该数据库。请任何人解决我的问题
    • 如何使用外部数据库请帮帮我
    • 此代码相同,只需将 packagename 和 DBName.sqlite 替换为您的文件即可。
    • @ Krishnakant Dalal 上面的代码在模拟器中运行良好,但在设备中运行良好。可能是什么原因
    【解决方案3】:

    查看此链接,如果您在 Android 中使用自己的数据库,这将非常有帮助。

    http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

    在本教程中,您必须将数据库放在项目的资产文件夹中,数据库将自动转移到您设备的数据库文件夹中。

    【讨论】:

    • 本教程很好,但第一次尝试访问表格时应用程序崩溃
    【解决方案4】:

    请参阅 https://github.com/jgilfelt/android-sqlite-asset-helper 以获取帮助程序库来处理此问题。

    (我没有亲自使用过这个库,但我昨天在搜索其他东西时遇到了它。不过,它似乎可以满足您的需求)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-24
      • 2012-03-06
      • 1970-01-01
      • 2015-05-20
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 2012-09-30
      相关资源
      最近更新 更多