2014-12-08 5 views
0

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 :

감사

+0

st.executeUpdate (insert)를 대체하십시오. st.executeUpdate(); – MihaiC

답변

2

다음은 문제입니다.

st.executeUpdate(); 
+0

좋은 캐치, 고마워! – Idefixx

-1

문제는 SQL 구문을 다음과 같습니다

시도는이 라인을 변경합니다. 나는 SQL 문장의 끝에 세미콜론을 의심한다. 그것은 거기에 속하지 않습니다 - 아마 당신이 당신의 쿼리를 테스트 한 다른 툴로 복사했을 것입니다.

관련 문제