是否可以使用“可更新”的jdbc结果集更新SQLServer数据库中的几何列?
我已经尝试过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 :(得分:0)
您当前的代码相当于尝试将列的值设置为字符串"geometry::STGeomFromText('POINT (30 -20)',4326)"
,这显然不起作用,因为函数调用的字符串值与函数调用本身不同。 UpdateString
只能用于设置值,而不能用于调用函数。
根据错误消息,您需要使用已编码坐标的十六进制字符串。我不知道Java中是否有可用的方法来计算这个,所以我担心使用UPDATE
的现有解决方法可能是唯一可用的解决方案。