JDBC insert语句不起作用

0 java jdbc

我正在尝试创建一个在数据库中插入数据的java应用程序.应用程序非常简单.它从用户输入3个输入并将该输入插入数据库.一切正常但我得到执行插入语句的SQL错误.这是代码片段.

sa.executeUpdate("INSERT INTO history (to, subject, body)"+"VALUES("+ DATA1 + "','" + DATA2 + "','" +DATA3+ "')'");
Run Code Online (Sandbox Code Playgroud)

我确信我的双引号和单引号有问题.

Cam*_*ner 6

你应该总是使用PreparedStatements来做这种事情.它负责为您引用并保护您免受SQL注入攻击:

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();
Run Code Online (Sandbox Code Playgroud)

不仅如此,数据库驱动程序还可以编译和缓存预准备语句,从而可以提高它们的效率.

请注意,setString索引是从1开始的,而不是从零开始的.