2012-06-01 51 views
0

Android sqlite命令類似於 db.delete(table,whereClause,whereArgs); whereClause是一個字符串,例如「column1 =?和column2 =?」 whereArgs是一個字符串數組,它保存將在whereClause中替換的值。 有沒有一種簡單的方法讓我從這裏獲取解碼的字符串(用於記錄目的)。 String.format似乎很接近,但並不完全。這就是我的目標爲:在android sqlite參數上使用java String.format

Log.e(MY_DEBUG_TAG, 
    "Error executing Delete(" + table + ", " + 
      String.format(whereClause, whereArgs + ")"); 
+1

爲什麼你想使自己容易受到SQL注入式攻擊(或工作了所有的報價要求)而不是以正常方式使用參數化查詢? –

+0

我正在使用參數化查詢。只是當我遇到問題時,我想閱讀日誌,看看我在做什麼。 string [] ToString()沒有提供任何關於數組中字符串的有用信息,所以我想知道如何將參數轉換爲一個容易讀取的字符串。 – MrGibbage

+0

我的確道歉 - 我錯過了這只是爲了伐木。我個人只是記錄參數化的SQL並單獨記錄參數。 –

回答

2

如果只是爲了記錄的目的,你可以嘗試:

Log.e(MY_DEBUG_TAG, 
    "Error executing Delete(" + table + ", " + 
      String.format(whereClause.replaceAll("\\?", "%s"), (Object[])whereArgs) + ")"); 
+0

我得到這個警告「應該顯式地將String []類型的參數強制轉換爲Object [],以便從String類型調用varargs方法格式(String,Object ...),也可以強制轉換爲Object可變參數調用「我如何讓它消失? – MrGibbage

+0

你說得對。演員補充。 –