0

DBに問題があります。2つの列があり、アプリは正常に機能しましたが、新しい列を追加しようとすると、問題が発生しました。

12-03 21:04:33.716:I / SqliteDatabaseCpp(726):sqliteが返されました:エラーコード= 1、msg =そのような列はありません:Content3、db = / data / data / com.example.pp / databases / MY_DATABASE

public class SQLiteAdapter {

public static final String MYDATABASE_NAME = "MY_DATABASE";
public static final String MYDATABASE_TABLE = "MY_TABLE";
public static final int MYDATABASE_VERSION = 1;
public static final String KEY_ID = "_id";
public static final String KEY_CONTENT1 = "Content1";
public static final String KEY_CONTENT2 = "Content2";
public static final String KEY_CONTENT3 = "Content3";

//create table MY_DATABASE (ID integer primary key, Content text not null);
private static final String SCRIPT_CREATE_DATABASE =
    "create table " + MYDATABASE_TABLE + " ("
    + KEY_ID + " integer primary key autoincrement, "
    + KEY_CONTENT1 + " text, "
    + KEY_CONTENT2 + " text, "
    + KEY_CONTENT3 + " text);";

これは挿入関数です

public long insert(String content1, String content2, String content3){

    ContentValues contentValues = new ContentValues();
    contentValues.put(KEY_CONTENT1, content1);
    contentValues.put(KEY_CONTENT2, content2);
    contentValues.put(KEY_CONTENT3, content3);
    return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues);
}

そしてこれはカーソル

public Cursor queueAll(){
    String[] columns = new String[]{KEY_ID, KEY_CONTENT1, KEY_CONTENT2, KEY_CONTENT3};
    Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, 
            null, null, null, null, null);

    return cursor;
}

問題を特定するのを手伝ってください。Android開発の初心者へのヘルプ:)

4

2 に答える 2

1

作成時にテーブルにデータを入力している場合、またはテーブルの内容をバージョン 1 から次のバージョンに保持する必要がないSQLiteAdapter場合は、上記のようにテーブルのバージョン番号を自動インクリメントし、以下を に追加します。

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion >= newVersion)
        return;
    db.execSQL("DROP TABLE IF EXISTS " + MYDATABASE_TABLE);
    onCreate(db);
}

これによりテーブルが削除され、再作成されることに注意してください。コンテンツを残す必要がある場合はALTER TABLE、変更に合わせてスクリプトを作成する必要があります。

テーブルを残す必要がある場合は、この StackOverflow Q&AAlter Tableを参照して、 inを達成する方法を参照してonUpgrade()ください。繰り返しますが、変更した内容のニーズを満たすために変更する必要があります。次にデータベースに変更を加えるときは、DB バージョン # をインクリメントするだけでなく、行った変更に一致するように書き直す必要があります。

于 2012-12-03T18:34:16.390 に答える
0

列またはテーブルを更新するときは、データベースのバージョンも更新する必要があります。データベースに複数のテーブルがある場合は、ファイル内のデータベースのバージョン番号が同じであることを確認する必要があります。バージョン番号に競合がある場合、テーブルは同時に更新されません。

于 2012-12-03T18:11:33.963 に答える