2012-05-11 15 views
9

Ben android pazarında bir uygulama var, şimdi dosyalanmış veritabanı değiştirmek istiyorum. Belirli bir tabloya iki yeni alan eklemek istiyorum. Tabloya iki yeni sütun eklememe nasıl yardımcı olabilirsiniz? Android SQLite veritabanına iki yeni sütun nasıl eklenir?

İşte benim kodudur.

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

Yürütme sonrasında aşağıdaki hatayı aldım.

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

Olası kopyalar [sqlite değiştirmek tablonun tek bir açıklamada BİRDEN sütunları eklemek] (http://stackoverflow.com/questions/6172815/sqlite-alter-table-add-multiple-columns-in-a- tek beyan) –

cevap

27

Her seferinde yalnızca bir sütun ekleyebilirsiniz. İki ALTER TABLE ifadesine bölün ve iyi olmalısın.

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); 
} 
ait
+0

Bana çok yardım ettiğiniz için değerli zamanınız için çok teşekkür ederim. –

+1

Geçici bir tablo oluşturursanız ve varolan tablonun satırlarını geçici tabloya kopyalarsanız mümkündür. Mevcut tabloyu bırakın ve bir tane daha oluşturun ve geçici tablodan kopyalayın. Dize table_temp = '+ tempTableName + ..... "GEÇİCİ tablo oluşturmak'; bu, tek bir sorguda yapılabilir cant eski bir soru beri – Tarun

+0

ama buraya gelen başkalarına başvuru için: Bu yapamaz? Tek bir sorgudaki işlemler (alter), işlem başına bir tane yapmanız gerekir. – DEV

İlgili konular