如何更新JDBC只读ResultSet的行

时间:2013-03-06 12:53:33

标签: java jdbc

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

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

这在Updatable上运行正常,但是如果它是ResultSet.CONCUR_READ_ONLY呢?

修改

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

解决方案:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

我希望上述内容有道理。