java - JDBC插入语句不起作用

标签 java jdbc

我正在尝试创建一个在数据库中插入数据的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/

相关文章:

java - 在 JDBC 中使用时,查询返回的行数少于 SQL 开发人员

java - 是否可以将基本的 JDBC SQL 类型映射到 Java 类?

java - 如何修改 Java 存储过程中的 oracle.sql.ARRAY 参数?

java - DriverManager.registerDriver() 静态方法

java - 比较给定期间内的日期

java - 有没有一种好方法将文档监听器添加到动态创建的 JTextField

java - 为什么公共(public)方法需要记录调用?

java - 如何传递连接代码?

java - 替换 GlobalSettings.onStart 和 onStop

java - 将 Eclipse 插件项目转换为 Eclipse RCP 应用程序