如何通过对不同列使用可重用代码在 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 列)?的主要内容,如果未能解决你的问题,请参考以下文章