2014-12-05 66 views
1

是否可以使用「可更新」jdbc結果集來更新SQLServer數據庫中的幾何列?SQLServer - 是否可以使用jdbc結果集更新幾何列?

我試過updateString()和updateObject()方法都無濟於事。例如:

String point = "geometry::STGeomFromText('POINT (30 -20)',4326)"; 
rs.updateString("COORDINATE", point); 
rs.update(); 

拋出異常:

com.microsoft.sqlserver.jdbc.SQLServerException: The string is not in a valid hex format. 

我一直沒能找到這個錯誤是什麼意思。我需要逃避某些角色嗎?我是否允許以字符串形式傳遞函數?或者我應該使用不同的更新方法,如updateBlob()或updateNCharacterStream()?

順便說一句,我可以使用準備的語句更新幾何,但我不喜歡。例如:

String sql = "UPDATE MY_TABLE SET COORDINATE=geometry::STGeomFromText(?,4326) WHERE ID=?"; 
stmt = conn.prepareStatement(sql); 
stmt.setString(1, "POINT (30 -20)"); 

同樣,我不想使用預處理語句。我想用結果集更新記錄(例如updateString)。

回答

0

您當前的代碼等同於嘗試將列的值設置爲字符串"geometry::STGeomFromText('POINT (30 -20)',4326)",這顯然不起作用,因爲函數調用的字符串值與函數調用本身不同。 UpdateString只能用於設置一個值,而不能調用某個函數。

根據錯誤消息,您需要使用已編碼座標的十六進制字符串。我不知道在Java中是否有可用的方法來計算這一點,所以我擔心您現有的解決方法使用UPDATE可能是唯一可用的解決方案。

相關問題