2012-04-16 10 views
0

私は私のデータベースに新しい列を追加します。アンドロイドのための:sqliteの文句を言わない仕事上のONUPGRADE私(私はこのデータベース上のデータを持っている)</p> <p>私はこのコードを持っている

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    if (newVersion > oldVersion) { 
     db.execSQL("ALTER TABLE MEN ADD COLUMN New_Pulse INTEGER DEFAULT 0"); 
    } 
} 

それ文句を言わない仕事、からを私はoldVersionとnewVersionを取得しますか?それは私のために働く

try{ 
    db.execSQL("ALTER TABLE MEN ADD COLUMN New_Pulse INTEGER DEFAULT 0"); 
} 
catch (Exception e) { 
    // TODO: handle exception 
} 

- しかし、私はあなたが自分でチェックする必要はありませんその醜いソリューション

+0

oldVersionとnewVersionのログを印刷し、入手したものを確認してください。データベースクラスにデータベースバージョンを宣言しましたか?手動でそれを変更したり、テーブルスキーマに詳細を追加したりしますか? –

+0

onUpgradeが呼ばれているかどうかチェックしてください。また、テーブルスキーマの変更を追加する前に手動でDATABASEのバージョンを増やしてください。 – Herry

答えて

0

ことを知っている;:今のところ

を私はこれをやっSQLiteOpenHelperは自動的にそれを行います!以前よりも高いバージョン番号を入力すると、ヘルパーはonUpgrade()メソッドを呼び出します。ここでは、アップグレードの処理方法を処理する必要があります。

.... 
.... 
mySqlHelper = new mySqlHelper (context, DATABASE_NAME, null, DATABASE_VERSION); 

private static class MySQLHelper extends SQLiteOpenHelper { 

    public MySqlHelper(Context context, String name, CursorFactory factory, int version) { 
     super(context, name, factory, version); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // upgrade code.. 
     // drop tables 
     onCreate(db); 
    } 
} 
関連する問題