MySQL 서버에서 PreparedStatement를 사용하여이 코드를 실행하는 데 문제가 있습니다. 그것은 전에 standart Statement가 포함 된 np를 해왔습니다. 마음 : 이것은 테스트 프로그램이며, 나는이 것들만 배우고 있습니다. 코드는 다음과 같습니다PreparedStatement가 인수를 넣지 않음
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);
}
PARAMS 다음 인 상태 :
SQL 예외 : com.mysql.jdbc.exceptions.jdbc4
int id; String name, surname, city, street; java.sql.Date date;
이 나에게 다음과 같은 예외가 있습니다. MySQLSyntaxErrorException : SQL 구문에 오류가 있습니다. 라인 1에서 ',?,?,?,?,?)'근처에서 사용할 올바른 구문에 대해서는 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오.
st에서 값을 설정하지 않는 이유는 무엇입니까? .setXXXX 문? 당신이 Statement.executeUpdate(String sql)를 호출하고 물음표가 삽입 문을 통과 그래서
st.executeUpdate(insert);
, 대신 PreparedStatement.executeUpdate :
감사
st.executeUpdate (insert)를 대체하십시오. st.executeUpdate(); – MihaiC