2012-05-11 53 views
1

我需要從我的數據庫表中刪除多行。 這是我爲刪除android,在sqlite中刪除多行

String[] paragraph; 
..... 
//here you can to put various strings within it (1 or more) 
..... 
db.delete(mytablename,"Paragraph = ?",paragraphs); 

它與1串代碼,但它不與多個字符串工作。 有人可以幫我嗎?

這裏有一個由logcat中所示的錯誤:因爲你在你的`paragraph`陣列,例如條目S:

05-11 11:03:01.400: E/AndroidRuntime(767): FATAL EXCEPTION: main 
05-11 11:03:01.400: E/AndroidRuntime(767): android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x377500 
05-11 11:03:01.400: E/AndroidRuntime(767): at android.database.sqlite.SQLiteProgram.native_bind_string(Native Method) 
05-11 11:03:01.400: E/AndroidRuntime(767): at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:241) 
05-11 11:03:01.400: E/AndroidRuntime(767): at android.database.DatabaseUtils.bindObjectToProgram(DatabaseUtils.java:191) 
05-11 11:03:01.400: E/AndroidRuntime(767): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1769) 
05-11 11:03:01.400: E/AndroidRuntime(767): at it.tirocinio.Segnalibro$3$3.onClick(Segnalibro.java:196) 
05-11 11:03:01.400: E/AndroidRuntime(767): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 
05-11 11:03:01.400: E/AndroidRuntime(767): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-11 11:03:01.400: E/AndroidRuntime(767): at android.os.Looper.loop(Looper.java:123) 
05-11 11:03:01.400: E/AndroidRuntime(767): at android.app.ActivityThread.main(ActivityThread.java:4627) 
05-11 11:03:01.400: E/AndroidRuntime(767): at java.lang.reflect.Method.invokeNative(Native Method) 
05-11 11:03:01.400: E/AndroidRuntime(767): at java.lang.reflect.Method.invoke(Method.java:521) 
05-11 11:03:01.400: E/AndroidRuntime(767): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-11 11:03:01.400: E/AndroidRuntime(767): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-11 11:03:01.400: E/AndroidRuntime(767): at dalvik.system.NativeStart.main(Native Method) 
+2

你需要相同數量的? 「Paragraph =?OR Paragraph =?OR Paragraph =?」對於長度爲3的數組。 – Jens

+1

它不適用於多個字符串。 'db.delete中的段落=?'將只接受一個選擇參數。你可以使用類似'db.rawquery(DELETE FROM table WHERE columnName IN('name1','name2','name3')); ' – Tarun

+0

我明白原因,我不能使用你的解決方案,因爲字符串的數量是可變的。我認爲我必須使用for並重復刪除語句。有什麼建議?我想有最好的解決方案。 – sleone08

回答

7
use this way: 


for(int i = 0 ; i < paragraphs.lenght;i++) 
{ 

db.delete(mytablename,"Paragraph ='"+paragraphs[i]+"'",null); 
} 
+0

完美的解決方案.. :) –

+0

沒有辦法在單個查詢中這樣做嗎?這種方法對於(比方說)大約100行來說成本太高。 – eRaisedToX