2012-05-11 3 views
9

Ich habe eine Anwendung auf Android-Markt, jetzt möchte ich die Datenbank archiviert ändern. Ich möchte zwei neue Felder zu einer bestimmten Tabelle hinzufügen. Kannst du mir helfen, zwei neue Spalten zur Tabelle hinzuzufügen?Wie füge ich zwei neue Spalten zu Android SQLite Datenbank hinzu?

Hier ist mein Code.

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); 
} 

Ich habe den folgenden Fehler nach der Ausführung.

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

Mögliche Duplikat [SQLite alter table in einer einzigen Anweisung mehrere Spalten hinzufügen] (http://stackoverflow.com/questions/6172815/sqlite-alter-table-add-multiple-columns-in-a- single-statement) –

Antwort

27

Sie können jeweils nur eine Spalte hinzufügen. Teilen Sie es in zwei ALTER TABLE Aussagen und Sie sollten in Ordnung sein.

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

Vielen Dank für Ihre wertvolle Zeit, mir sehr zu helfen. –

+1

Dies ist möglich, wenn Sie eine temporäre Tabelle erstellen und die Zeilen der vorhandenen Tabelle in die temporäre Tabelle kopieren. Löschen Sie die vorhandene Tabelle und erstellen Sie sie erneut und kopieren Sie sie aus der temporären Tabelle. Zeichenkette table_temp = "create TEMPORARY Tabelle" + tempTableName + ..... "; – Tarun

+0

kann dies nicht in einer einzigen Abfrage erledigt werden? – DEV