当前位置: 首页 > 知识库问答 >
问题:

SQLServer-是否可以使用jdbc结果集更新几何体列?

宗政兴发
2023-03-14

是否可以使用“可更新”的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()或UpdateCharacterStream()?

顺便说一句,我可以用事先准备好的语句来更新几何体,但我不喜欢。例子:

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

再说一遍,我不想使用事先准备好的陈述。我想使用resultset更新记录(例如updateString)。

共有1个答案

郁明诚
2023-03-14

您当前的代码相当于尝试将列的值设置为字符串“geometry::StGeometryFromText('POINT(30-20)'4326)”,它显然不能作为函数调用的字符串值,但与函数调用本身并不相同<代码>更新字符串只能用于设置值,不能调用函数。

根据错误消息,您需要使用带有已编码坐标的十六进制字符串。我不知道Java中是否有可用的方法来计算这个问题,所以我担心使用UPDATE的现有解决方案可能是您唯一可用的解决方案。

 类似资料:
  • 主要内容:ResultSet类型,ResultSet的并发性,浏览结果集,查看结果集,更新结果集SQL语句执行后从数据库查询读取数据,返回的数据放在结果集中。 语句用于从数据库中选择行并在结果集中查看它们的标准方法。 接口表示数据库查询的结果集。 对象维护指向结果集中当前行的游标。 术语“结果集”是指包含在对象中的行和列数据。 接口的方法可以分为三类: 浏览方法:用于移动光标。 获取方法:用于查看光标指向的当前行的列中的数据。 更新方法:用于更新当前行的列中的数据。 然后在基础数据库中更新数

  • 问题内容: 我正在使用Spring Roo,使用Spring MVC和JPA来实现MySQL数据库的持久性。总的来说,我对Spring MVC和Java还是很陌生,但是已经使用CakePHP和Rails。 我有一个除密码外还包含个人详细信息的实体。诸如此类(不包括其他.aj文件中许多Roo生成的功能): 然后,我在控制器中执行了一个编辑操作,该操作是根据Roo自动生成的脚手架创建的以下约定: 再次

  • 我正在使用SpringRoo,使用SpringMVC和JPA对MySQL数据库进行持久化。一般来说,我对Spring MVC和Java非常陌生,但我曾经使用过CakePHP和Rails。 我有一个实体,除了密码之外还包含个人详细信息。类似这样的东西(不包括附加. aj文件中的许多Roo生成的功能): 然后,我在我的用户控制器中有一个编辑操作,我根据Roo自动生成的脚手架创建了以下约定: 以及一个J

  • 问题内容: Hibernate API是否以List以外的集合形式支持对象结果集? 例如,我有运行数十万次迭代的过程,以便为客户端创建一些数据。该过程使用“值”表中的记录(例如),以便为每次迭代创建此输出。 对于列表,我必须遍历整个列表才能找到某个值,这很昂贵。我希望能够返回TreeMap并以编程方式指定键,以便我可以在集合中搜索所需的特定值。Hibernate可以帮我吗? 问题答案: 我假设您是

  • 先决条件:Java7和SQLServer 2016。 我从SQL Server获取存储过程返回的结果集 结果集: 我创建了一个POJO类来保存结果集。我想创建一个Hashmap对象,其中Key为,,,Value为List,其中包含给定Key的所有值。 那么,我可以使用HashMap做到这一点吗?我想我可以使用包含其他地图作为价值的地图。但不确定如何使公共键值项作为列表。 Java类: HoursQ

  • 我正在执行一个查询,想要在字符串二维数组中捕获结果。我们正在使用NamedParameterJdbcTemboard来执行查询。要将结果填充到二维String数组中,我需要知道行数和columns.We从结果集元数据中获取列数。 如何查找行数?如何在Spring jdbc中使用可滚动结果集