Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在数据库中添加第二个表_Java_Android_Database_Add_Multiple Tables - Fatal编程技术网

Java 在数据库中添加第二个表

Java 在数据库中添加第二个表,java,android,database,add,multiple-tables,Java,Android,Database,Add,Multiple Tables,这是我的第一篇帖子!我希望你能帮助我!:-) 我使用开发者文档中NotePadExample提供的代码创建了一个数据库。现在我想添加第二个表来存储不同的数据。我可以毫无问题地添加注释,并且注释表的创建方式与我的routes表类似。我只是简单地“复制”并编辑了给定的代码,但是当我尝试插入到新表中时,我得到了一个错误,错误是: “0错误/数据库(370):android.Database.sqlite.SQLiteException:无此类表:路由:,编译时:插入路由(行、到达、持续时间、开始)值(

这是我的第一篇帖子!我希望你能帮助我!:-)

我使用开发者文档中NotePadExample提供的代码创建了一个数据库。现在我想添加第二个表来存储不同的数据。我可以毫无问题地添加注释,并且注释表的创建方式与我的routes表类似。我只是简单地“复制”并编辑了给定的代码,但是当我尝试插入到新表中时,我得到了一个错误,错误是:

“0错误/数据库(370):android.Database.sqlite.SQLiteException:无此类表:路由:,编译时:插入路由(行、到达、持续时间、开始)值(?,,?);”

有人可以快速查看我的DbAdapter类,特别是onCreate()方法吗。给我一个提示或解决方案?我真的看不出有什么问题。我的代码编译时没有任何错误

代码: 添加 我想实现一个类似的方法

public void deleteTableRoutes(SQLiteDataBase db){
 db.delete("routes", null, null);
}

我的问题:我想从一个点调用这个函数,在这个点上我没有对我的db的引用(据我所知),以作为我的deleteTableRoutes(SQLiteDataBase)的参数传递。

我想你需要选择一个新的(更高的)版本号,并修改你的方法来删除路由(如果它也存在的话)。当然,您可能实际上不需要删除现有的表(例如,创建和更改可能就足够了),但这样做与您当前的实现是一致的

您将使用新版本调用构造函数,它将在内部调用onUpgrade,传递新旧版本。

而不是:

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS notes");
        onCreate(db);
    }
private static final int DATABASE_VERSION = 2;
我必须修改方法,如下所示:

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS notes");
        db.execSQL("DROP TABLE IF EXISTS routes"); // line added
        onCreate(db);
    }
而我不是:

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS notes");
        onCreate(db);
    }
private static final int DATABASE_VERSION = 2;
我把它改成:

private static final int DATABASE_VERSION = 3;

但是,我并不完全了解更改数据库版本的实际影响。

为什么要创建两次
路由<代码>db.execSQL(数据库创建路由)与下面的代码行相同。您好,谢谢您的回答。现在我可以再次登录了,愚蠢的cookies;-)@纳苏法拉:我只是忘了在这里删除它。我试着用“另一种”的方式去做,因为我不知道要改变什么@Matthew Flaschen:如何调用SQLiteOpenHelper?我没有这方面的例子。。。在哪里?我不明白我要做的改变。嘿,我要让它工作。但是,现在,每次我获取结果时,它都会向表中添加越来越多的条目,导致视图经常x次显示路由。。如何在每次显示routes表时仅删除它们?请使用新代码发布更新。您不需要每次打开数据库时都删除表,只有在升级完成后才需要。我更新了我的初始帖子。我“认为”我需要删除它,否则它会继续将路由添加到数据库中。。我不知道如何实现数据库只更新,或者用新数据替换。。但我是新手:-)所以请随意纠正我