如何使用Java中的PreparedStatement更新多个列 - JDBC

Jun*_*tar 0 java mysql jdbc

我想通过使用PreparedStatement使用Java应用程序更新我的MySQL数据库中的多列数据,但我无法弄清楚如何做到这一点.

以下是更新的代码查询:

String s = "UPDATE items SET name =" + u.getName() + ",category="
                + u.getCategory() + ", price=" + u.getPrice()
                + "   ,qunatity=" + u.getQuantity() + " WHERE id = '"
                + u.getId() + "'; ";
Run Code Online (Sandbox Code Playgroud)

thk*_*ala 57

不,不,不,不!

千万不要通过连接字符串建立SQL语句.我以为我们很久以前就已经结束了.这是一种非常糟糕的做法,也是一种非常好的方法来创建错误并为您的应用程序带来巨大的安全漏洞.通过连接字符串来创建SQL语句是灾难的一种方法,也是一种需要在它占用之前被杀掉的坏习惯.

使用准备好的陈述 - 从长远来看,它将为您节省很多痛苦.

例如,将您所写的内容与此进行比较:

PreparedStatement update = connection.prepareStatement
    ("UPDATE items SET name = ?, category = ?, price = ?, quantity = ? WHERE id = ?");

update.setString(1, u.getName());
update.setString(2, u.getCategory());
...
update.setInt(5, u.getId());

update.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

当然,它稍微冗长一点,但更具可读性,更不容易出错 - 更不用说JDBC会处理那些使SQL注入成为可能的引用问题.