1

アプリに SQLite データベースがあり、アプリや値などにいくつかの変更を加えたので、列の名前を変更 (または削除して新しいものを追加) する必要があります。

最初に列名の名前を変更しましたが、今では

sqlite.sqliteexception no such column error...

明らかにこのエラーを返すこのアマチュアの単純なアプローチの代わりに、テーブル (列名) を変更するための別の方法を使用する必要がありますか?

アップデート

トリックは、データベースのバージョンを変更することです。

    public DatabaseManidzer(Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    } 

   @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){

            Log.w(DatabaseManidzer.class.getName(),"Upgrading database from version " + oldVersion + " to "
                    + newVersion + ", which will destroy all old data");

            db.execSQL("DROP TABLE IF EXISTS " + TABLE_VNOSI);
            onCreate(db);

        }
4

3 に答える 3

3

はい、DatabaseHelper を使用している場合は、データベース スキーマをアップグレードする方法があります。

これを行うためのチュートリアルがたくさんあります。

これが1つです。 AndroidはSQLite DBスキーマを更新しますか?

あなたが探している方法はonUpgradeです

また、最初に実際の列名を変更しない限り、実際のテーブル列を参照する変数の名前を変更しないでください。必要なことを行うには、SQLクエリを使用する必要があります。

于 2013-10-04T20:12:30.410 に答える
0

if DB version : 6 Ex : 5列のテーブルがある

にアップグレードする場合: 7

  1. テーブルを作成するときに列を追加する必要があります
  2. onUpgrade メソッド:

    if (oldVersion < 7)
    { db.execSQL(DATABASE_ALTER_ADD_PAPER_PAID); db.execSQL(DATABASE_ALTER_LAST_UPLOADED); デシベル。execSQL(DATABASE_ALTER_PAPER_LABEL); }

上記の 2 つの操作の後、新規インストール ユーザーとアプリ アップグレード ユーザーは問題なく動作します。

よろしくヴィノード

于 2017-09-26T09:57:27.347 に答える
0

onUpgrade メソッドに ALTER TABLE クエリを追加するだけで、ヘルパー クラスの DB バージョンを増やすことを忘れないでください。そうすれば、既存のデータをテーブルに保持できます。または、まだ開発中の場合は、テーブルを削除して、新しい変更で再作成してください。あなたが成功しようとしていることの例を私に教えてくれれば、私はあなたをもっと助けるかもしれません.

ありがとう。

于 2013-10-04T22:05:45.160 に答える