我正在使用Derby數據庫。我寫了這個查詢:比較PreparedStatement中的Blob類型
InputStream is = new java.io.ByteArrayInputStream(BYTES);
PreparedStatement st11 = conn.prepareStatement("select f from a1 where dBlob =?)");
st11.setBlob(1,is,BYTES.length);
dBlob是一個BLOB數據類型。 BYTES也是一個BLOB數據類型。
,但我得到以下情況例外,當我執行這個查詢:
造成的:ERROR 42818:不支持「BLOB」和「斑點」之間的比較。 類型必須具有可比性。字符串類型也必須具有匹配的排序規則。如果不匹配,則可能的解決方案是強制操作數強制爲默認排序規則(例如,SELECT tablename FROM sys.systables WHERE CAST(tabl ename AS VARCHAR(128))='T1')
如何編寫查詢來規避這個問題?
我也使用轉換嘗試,但它並沒有與工作過:而且
PreparedStatement st11 = conn.prepareStatement("select f from a1 where dBlob
=CONVERT(?,BINARY)");
st11.setBlob(1,is,BYTES.length);
,是有可能得到在傳遞參數的數據類型?通過反射或其他手段。
謝謝布萊恩。我已經解決了這個問題。 由於某些原因,我正在比較PreparedStatement中設置的參數類型。是否可以爲所有LOB提供一個通用比較類型,還是需要針對每個CLOB,BLOB和nCLOB數據類型進行具體比較? – krammer