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) 以下の create table ステートメントを試してください。

 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.DBが作成されていない場合は一度呼び出す必要があります.DBがすでに存在する場合、onCreateは呼び出されず、変更は影響しませんDB。

OPで働いた>> DBバージョンを変更することでもこれを行うことができます。

于 2013-02-05T21:00:55.913 に答える