作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个在数据库中插入数据的java应用程序。申请相当简单。它从用户处获取 3 个输入并将该输入插入到数据库中。一切正常,但执行插入语句时出现 sql 错误。这是代码片段。
sa.executeUpdate("INSERT INTO history (to, subject, body)"+"VALUES("+ DATA1 + "','" + DATA2 + "','" +DATA3+ "')'");
我确信语句中的双引号和单引号有问题。
最佳答案
对于这种事情,您应该始终使用PreparedStatement
。它会为您处理引用并保护您免受 SQL 注入(inject)攻击:
PreparedStatement statement = connection.prepareStatement("INSERT INTO history (to, subject, body) VALUES (?, ?, ?)");
statement.setString(1, DATA1);
statement.setString(2, DATA2);
statement.setString(3, DATA3);
statement.execute();
不仅如此,数据库驱动程序还可以编译和缓存准备好的语句,从而可能提高它们的效率。
请注意,setString
索引是从 1 开始的,而不是从 0 开始的。
关于java - JDBC插入语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12633449/
我是一名优秀的程序员,十分优秀!