首页 > 解决方案 > executeUpdate (Java) 中的动态变量

问题描述

我有以下connectionstatementexecuteUpdate

Connection con = DBConnPool.getInstance().getConnection();
Statement stmt = con.createStatement();

//String str1 = "update node set compareflag=0, personalid=NULL where ipaddress='192.168.150.213'";

String str1 = "update node set compareflag=0, personalid=NULL where ipaddress='var3.getIpAddress()'";
                            stmt.executeUpdate(str1);

注释掉的String行完美运行,var3.getIpAddress()即使该变量确实包含我在代码的其他区域中使用的正确数据,另一行也会忽略返回的值。

我是否必须先创建一个单独的变量,然后将其等同于var3.getIpAddress()

任何想法表示赞赏,它可能在错误的地方“或”不够。

标签: javajdbcprepared-statement

解决方案


您应该使用PreparedStatement设置参数以确保安全。

PreparedStatement pstmt = con.prepareStatement("update node set compareflag=0, personalid=NULL where ipaddress=?");
pstmt.setString(1,var3.getIpAddress());
pstmt.executeUpdate();

推荐阅读