1

我对机器人开发很陌生,但我正在研究一些 SQL。我有一个扩展 SQLOpenDatabaseHelper 的类,并在 onCreate() 方法中执行:

        public static final String CREATE_DB = "CREATE TABLE " + TABLE_VOCAB_INFO
        + "(" + COLUMN_NAME + " TEXT NOT NULL PRIMARY KEY," + COLUMN_URL
        + " TEXT NOT NULL," + COLUMN_DOWNLOADED + "TEXT NOT NULL);";

但是,当我尝试像这样向数据库添加一些东西时:

        //Adding method 
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_NAME, "item " + i);
        cv.put(COLUMN_URL, "random url");
        cv.put(COLUMN_DOWNLOADED, "true");
        open();
        database.insert(TABLE_VOCAB_INFO, null, cv);

我得到错误:

      (1) no such table: vocab_info

我将如何解决这个问题?

编辑:更多信息。

我在助手的 onCreate() 方法中创建数据库,如下所示:

      public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL(CREATE_DB);
        } catch (SQLiteException e) {
            System.out.println("Error with creation");
        }
    }

我使用这样的添加方法访问数据库

          public void onClick(View viewSelected) {
    switch (viewSelected.getId()) {
    case R.id.bDownload:
        DatabaseManipulator dm = new DatabaseManipulator(this);
        dm.open();
        dm.addList(null);
        dm.addList(null);
        dm.addList(null);
        dm.addList(null);
        dm.addList(null);
        for (VocabList list : dm.getAllLists()) {
            System.out.println(list.getName());
        }
        dm.close();
        break;

提前致谢

4

1 回答 1

1

1)尝试下面的创建表语句。

 public static final String CREATE_DB = "CREATE TABLE " + TABLE_VOCAB_INFO
        + "(" + COLUMN_NAME + " TEXT NOT NULL PRIMARY KEY," + COLUMN_URL
        + " TEXT NOT NULL," + COLUMN_DOWNLOADED + " TEXT NOT NULL);";

2)如果您对或添加新表进行任何更改table structure,您需要卸载re-install您的应用程序,因为onCreate如果没有创建数据库,则调用一次,如果数据库已经存在 onCreate 将不会被调用并且您的更改不会影响D B。

为 OP 工作 >>您也可以通过更改数据库版本来做到这一点。

于 2013-02-05T21:00:55.913 回答