2012-05-11 11 views
9

私はアンドロイドマーケットで1つのアプリケーションを持っています。今、私はデータベースのファイルを変更したいと思います。私は特定のテーブルに2つの新しいフィールドを追加したいと思います。テーブルに2つの新しいカラムを追加する方法を教えてください。AndroidのSQLiteデータベースに2つの新しい列を追加するには?

ここに私のコードです。

private static final String ALTER_USER_TABLE = "ALTER TABLE user_table ADD user_society text,user_street1 text;"; 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{ 
    db.execSQL(ALTER_USER_TABLE); 
} 

実行後に次のエラーが発生しました。

W/System.err( 717): android.database.sqlite.SQLiteException: near ",": syntax error: ALTER TABLE user_table ADD user_society text,user_street1 text; 
W/System.err( 717): at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method) 
W/System.err( 717): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1727) 
W/System.err( 717): at com.kbobs.org.database.Database$DatabaseHelper.onUpgrade(Database.java:48) 
W/System.err( 717): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:108) 
W/System.err( 717): at com.kbobs.org.database.Database.OpenDatabase(Database.java:54) 
W/System.err( 717): at com.kbobs.org.ui.Login$2.handleMessage(Login.java:222) 
W/System.err( 717): at android.os.Handler.dispatchMessage(Handler.java:99) 
W/System.err( 717): at android.os.Looper.loop(Looper.java:123) 
W/System.err( 717): at android.app.ActivityThread.main(ActivityThread.java:4627) 
W/System.err( 717): at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err( 717): at java.lang.reflect.Method.invoke(Method.java:521) 
W/System.err( 717): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
W/System.err( 717): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
+1

可能な重複[sqliteのALTER TABLEつの文で複数の列を追加](http://stackoverflow.com/questions/6172815/sqlite-alter-table-add-multiple-columns-in-a-シングルステートメント) –

答えて

27

一度に1つの列しか追加できません。それを2つのALTER TABLEステートメントに分割してください。

private static final String ALTER_USER_TABLE_ADD_USER_SOCIETY = 
    "ALTER TABLE user_table ADD user_society TEXT"; 
private static final String ALTER_USER_TABLE_ADD_USER_STREET1 = 
    "ALTER TABLE user_table ADD user_street1 TEXT"; 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{ 
    db.execSQL(ALTER_USER_TABLE_ADD_USER_SOCIETY); 
    db.execSQL(ALTER_USER_TABLE_ADD_USER_STREET1); 
} 
+0

私を大いに助けてくださった貴重な時間をありがとうございました。 –

+1

一時テーブルを作成して、既存のテーブルの行を一時テーブルにコピーすることができます。既存のテーブルを削除してもう一度作成し、一時テーブルからコピーします。 文字列table_temp = "TEMPORARYテーブルを作成" + tempTableName + ..... "; – Tarun

+0

これは単一のクエリで行うことができませんか? – DEV

関連する問題