-1

尝试更新 ResultSet 时遇到问题。我正在通过 JDBC 查询数据库,并返回一个不是 CONCUR_UPDATABLE 的结果集。我需要在指定的列中将 '_' 替换为 ' '。我怎么能那样做?

String value = derivedResult.getString(column).replace("_", " ");
derivedResult.updateString(column, value);
derivedResult.updateRow();

这在 Updatable 上运行良好,但如果它是 ResultSet.CONCUR_READ_ONLY 怎么办?

编辑:

这将是一个 JDBC 驱动程序,它调用另一个 JDBC 驱动程序,我的问题是我需要替换 ResultSets 的内容,即使它是仅转发或只读的。如果我设置了 scroll_insensitive 和可更新的,就没有问题,但是有一些 JDBC 驱动程序可以处理只向前的结果集。

解决方案:

  • 我是否应该尝试将结果移动到内存数据库并替换那里的内容。
  • 我是否应该像我的所有其他类一样实现结果集:如果需要,调用带有修改的底层驱动程序函数。

之后我不想使用结果来进行更新或插入。基本上这将在选择查询上完成。

4

1 回答 1

1

根据我的经验,更新结果集仅适用于简单查询(单个表上的选择语句)。但是,根据数据库,这可能会发生变化。我会首先查阅数据库文档。

即使您创建自己的可更新结果集,为什么您认为数据库数据会更改?很可能(几乎可以肯定)更新机制使用了不公开的代码,并且只存在于您使用的 jdbc 驱动程序的结果集实例实现类型中。

我希望以上是有道理的。

于 2013-03-06T13:03:35.370 回答