Android 在DDMS中找不到SQLITE数据库

Android 在DDMS中找不到SQLITE数据库,android,sql,Android,Sql,我已经在这上面呆了一段时间了,iv修改了我的代码很多次,这让我很痛苦。无论如何,我在sql数据库浏览器中创建了一个DB,我一直在阅读如何将它放在我正在开发的应用程序中。所以我将它放在我的资产文件夹中,并创建了一个数据库助手java类。但我只能将我的DB文件放在eclipse DDMS I中看看堆栈溢出的答案,只是不知道问题出在哪里。我再次将DBHelper代码更改为,但我的DDMS中仍然没有DB文件 你看到的图像是我现在的样子。这是第一个计算机编码iv 我是android新手,谢谢 您不必创

我已经在这上面呆了一段时间了,iv修改了我的代码很多次,这让我很痛苦。无论如何,我在sql数据库浏览器中创建了一个DB,我一直在阅读如何将它放在我正在开发的应用程序中。所以我将它放在我的资产文件夹中,并创建了一个数据库助手java类。但我只能将我的DB文件放在eclipse DDMS I中看看堆栈溢出的答案,只是不知道问题出在哪里。我再次将DBHelper代码更改为,但我的DDMS中仍然没有DB文件

你看到的图像是我现在的样子。这是第一个计算机编码iv 我是android新手,谢谢


您不必创建数据库并在项目中手动移动它。如果它不存在,将自动创建它。因此,有两种方法可以重写以创建数据库,并在数据库版本更改时对其进行更改。就打电话

super(context, DB_NAME, null, 1);
在构造函数中,其中“1”是您的数据库版本。如果将其更改为“2”,并且数据库已经存在,则将调用“onUpgrade”

public void onCreate(SQLiteDatabase db)
如果数据库不存在,将自动调用。在本例中,您希望向其中添加表

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
如果设备上的数据库版本低于应用程序中给定的数据库版本,将自动调用。在这种方法中,如果表在不同版本之间发生了更改,则可以更改表


我建议创建第二个类来与数据库交互(打开/关闭/插入)。请看一下本教程:

如果我理解您的意思是正确的,您不需要将就绪的SQLite文件添加到db文件夹中

  • 打开你的模拟器并确保它被选中

  • 在DDMS中打开/data/data/[your_package_name]/databases文件夹并选择它

  • 使用-+按钮拉入和插入文件


  • 使用SQLiteOpenHelper是正确的方法。这对我很有用。但是,我覆盖的唯一函数是

    public void onCreate(SQLiteDatabase db) 
    public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) 
    
    我想,我让它在默认位置创建数据库,在我应用程序内部存储区的根目录中

    在您的情况下,如果我了解您发布的内容,您希望将数据库从资产文件夹复制到内部存储。我的建议分为四个部分:

  • 暂时让Android为您创建一个空数据库,并找出它放在哪里
  • 修改copyDatabase代码以复制到该位置
  • 重写onCreate以调用copyDatabase。如果不存在数据库,Android将只调用onCreate,因此您可以无条件地调用copyDatabase
  • 将来,在进行模式更改时,请在onUpgrade中处理它们
  • 就这些了。让我知道你在这方面的进展

    一个警告:onCreate已经创建了一个空数据库,所以我不确定从资产中复制一个数据库是否可以在不关闭和重新打开数据库的情况下工作。我正在使用的另一种方法是将DDL放在资产文件中,然后在onCreate中处理它。类似这样的内容(除了我使用字符串数组而不是资产文件):

    String[]ddl=
    {
    创建表[T1]([id]整数不为空,[col1]字符)+
    “创建表[T2]([id]整数不为空,[col2]字符)”;
    };
    db.beginTransaction();
    尝试
    {
    for(int i=0,limit=ddl.length;i
    你在DB类中重写了onCreate()方法吗?我真的不知道你对上面java中的onCreate()是怎么说的,因为我觉得很难理解。伙计,我做了十次,我又做了一次,把文件推到上面了,谢谢。我不知道我从这里走到哪里,但我被困在了一个教程上。谢谢
    public void onCreate(SQLiteDatabase db) 
    public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) 
    
    String[] ddl = 
    {
      "CREATE TABLE [T1] ([id] INTEGER NOT NULL, [col1] CHAR);" +
      "CREATE TABLE [T2] ([id] INTEGER NOT NULL, [col2] CHAR)";
    };
    
    db.beginTransaction();
    try
    {
      for (int i = 0, limit = ddl.length;  i < limit;  i++)
        db.execSQL (ddl [i]);
    } finally {
      db.endTransaction();
    }