2011-07-10 30 views
0

在我的Android應用程序中,我有一個EventEvent的屬性爲id,它是long(其明顯標識了Event)。Android SQLite只接受String []作爲whereArgs?

當我想以更新SQLiteDatabaseEvent,我做了以下內容:

sqliteDatabase.delete("events", "id = ?", new String[] { "" + id }); 

它的工作原理,但有沒有這樣做的漂亮/更優選的方法是什麼?我的意思是不是僅爲一個元素創建新的String[],而是將長整數包裝爲String,這很麻煩。

回答

3

它的工作原理,但有沒有更漂亮/更喜歡這樣做?

使用String.valueOf(id)而不是""+id,因爲它會運行得更快,創造更少的垃圾。

我的意思是不是隻爲一個元素創建一個新的String [],而是將long包裝成一個String,這很麻煩。

歡迎您編寫自己的方法,從其他代碼隱藏繁瑣的代碼。

1

不是java編碼器,但也許這有效?

sqliteDatabase.delete("events", "id = ?", { id.toString() }); 
+0

這並不是說它不工作,他根本不想創建一個只有一個元素的新的String數組。 –

+0

另外,我不認爲這是可能的Java。 (只是陣列的{}} – whirlwin

+1

@Whirlwin它是可能的:'String [] test = {「Halo」,「World」};'< - 這應該編譯和運行就好。 –

2

您可以使用PreparedStatement並將您的變量綁定到它。但是這需要你編寫一個決定性的SQL查詢。

+0

+1爲替代解決方案,但我認爲這將是更麻煩的考慮你必須準備的聲明,然後綁定的論點,謝謝。 – whirlwin

+1

如果使用相同的SQL語法而不是其他值執行多個查詢,則預準備語句速度會快很多,並且可以節省SQL注入。 –

相關問題