gpt4 book ai didi

java - PreparedStatement 不添加参数

转载 作者:行者123 更新时间:2023-11-29 12:31:57 25 4
gpt4 key购买 nike

我在 MySQL 服务器上使用PreparedStatement 运行此代码时遇到问题。当我包含一个标准声明时,它之前一直在执行 np 。 Mind:这是一个测试程序,我只是学习这个东西。代码是:

PreparedStatement st = null;
try {
int id = registry.newID("ID");
if (id == 0) {
out.println("Failed to generate a new ID. Terminating dialogue.");
return;
}
String insert = "INSERT INTO registry (ID, NAME, SURNAME, DATE_OF_BIRTH, CITY, STREET) "
+ "VALUES (?, ?, ?, ?, ?, ?);";
st = registry.getConn().prepareStatement(insert);
st.setInt(1, id);
st.setString(2, name);
st.setString(3, surname);
st.setDate(4, date);
st.setString(5, city);
st.setString(6, street);
st.executeUpdate(insert);
registry.getConn().commit();
out.println("Added. Add a number? [y/n] ");
char choice = in.next().charAt(0);
if (choice == 'y') {
addNumber(id, registry);
}
st.close();
} catch (SQLException ex) {
out.println("SQL Exception: " + ex);
}

参数如下:

int id;
String name, surname, city, street;
java.sql.Date date;

这给了我以下异常:

SQL Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '?, ?, ?, ?, ?, ?)' at line 1

为什么没有在 st.setXXXX 语句中设置值?

谢谢

最佳答案

问题是这样的:

st.executeUpdate(insert);

所以,而不是 PreparedStatement.executeUpdate您调用Statement.executeUpdate(String sql)并通过带问号的插入语句。

尝试将此行更改为:

st.executeUpdate();

关于java - PreparedStatement 不添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27358495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com