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

标签 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() + "'; ";

最佳答案

不不不不!

不要通过连接字符串来构建 SQL 语句。我以为我们很久以前就已经解决了这个问题。这是一种非常不好的做法,也是一种非常会产生错误并让巨大安全漏洞进入您的应用程序的好方法。通过连接字符串创建 SQL 语句是灾难的根源,也是需要在养成习惯之前改掉的坏习惯。

Use prepared statements - 从长远来看,它将为您省去很多痛苦。

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

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();

当然,它稍微冗长一些,但可读性更高且更不容易出错 - 更不用说 JDBC 会处理那些使 SQL injection 变得讨厌的引用问题。可能。

关于java - 如何在 Java 中使用 PreparedStatement 更新多个列 - JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12025569/

相关文章:

java - 为什么结果不是1?

java - 将 ArrayList<String[]> 中的所有项目打印到控制台

php - 使用文件上传存储表单数据

MySQL 查询的性能问题优化最佳实践?

java - 基于String的调用方法

java - JAX-WS、Axis2 和 CXF 的区别

php - 在另一个语句中使用准备语句是否正确?

java - 将提取大小设置为负数

java - 确定查询是否会更改数据库

java - 必填字段 'client_protocol' 未设置