JAVAMySQL在JDBC准备的语句中抛出错误?
我有一个数据库和一个Java程序,我想从中(通过JavaFX中的GUI)将记录到数据库中。我多次尝试执行insert into
查询,但错误仍然出现-您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在“?,?,?)”附近使用的正确语法在第1行。代码如下:
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("*The connection string is deliberetely omitted*");
System.out.println("Connection established");
String query = "INSERT INTO User(Name,Username,PassWord) VALUES(?,?,?)";
PreparedStatement insertUser = conn.prepareStatement(query);
insertUser.setString(1,MOLCreate.fieldUsername);
insertUser.setString(2,MOLCreate.fieldUsername);
insertUser.setString(3,MOLCreate.fieldPassword);
//insertUser = conn.prepareStatement(query);
insertUser.executeUpdate(query);
conn.close();
我用相应的值替换了参数?
,而且数据库行与查询中的行相同。问题出在哪里
# 1 楼答案
这里的关键是错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?,?)'
这意味着对mysql的实际查询包含
?
,而不是预期的字符串问题出在{}
将
query
作为参数传递给executeUpdate()
执行原始查询字符串。根据javadocs,不应该为PreparedStatement调用此方法。执行PreparedStatement的正确方法是使用参考:
此外,还需要关闭PreparedStatement,因为它们可能会导致内存泄漏
# 2 楼答案
让我们试试-