如何通过对不同列使用可重用代码在 JDBC 中编写一个更新查询(更新 1 列)?

Posted

技术标签:

【中文标题】如何通过对不同列使用可重用代码在 JDBC 中编写一个更新查询(更新 1 列)?【英文标题】:How to write one single update query(to update 1 column) in JDBC by using a reusable code for different columns? 【发布时间】:2021-05-24 17:51:41 【问题描述】:

我要更新: 1.名称 2.薪水 3.号码 在 JDBC 中。 所以,我写了一大段代码来更新 jdbc 中的用户值 PreparedStatement ps = con.prepareStatement("update tablename set name=? where id=?"); 然后像往常一样,我们使用像 ps.setString() 和 ps.setInt(); 这样的方法。其次是 ps.executeQuery() 这工作正常。但是现在我必须重写相同的代码行来更新薪水和数字。我的问题是,有什么方法可以让我对这个东西使用相同的代码吗? 我试过了:

String name="name";
PreparedStatement ps = con.prepareStatement("update tablename set ?=? where id=?");
ps.setString(name);

以及类似的变体。 但它不起作用。在我的项目中,我有很多这样的字段,如果我为每个单独的字段编写不同的更新代码,它将大大增加我的 java 文件中的行数。我想要优化。 对此有什么想法吗?谢谢。

【问题讨论】:

【参考方案1】:

不,不能绑定列名

但这并不意味着您需要为每一列添加额外的代码。

您可以动态创建 SQL 字符串

"update tablename set " + getColumnname() + " =? where id=?"

并且您必须为更新列的每个数据类型实现不同的代码路径,例如setString, setLong, ...

如果你把列名作为外部参数,你应该检查它是否真的是一个列名,以防止SQL注入

【讨论】:

以上是关于如何通过对不同列使用可重用代码在 JDBC 中编写一个更新查询(更新 1 列)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 org.springframework.jdbc.object 实现可重用的 ddl 语句?

如何在scala中将withcolumn编写为可重用代码

如何编写可重用的 Javascript?

如何使用单槽修改数据表中的任何列

为 ASP.NET 网站编写可重用的 c# 代码

如何通过“重用”提高原型设计的工作效率