2013-08-09 3 views
-1

Netbeans를 사용하여 내 테이블의 필드를 업데이트하려고합니다.MySQL의 SyntaxErrorException에 대한 업데이트 쿼리

String driver = "com.mysql.jdbc.Driver"; 
String url = "jdbc:mysql://localhost:3306/student_reg"; 
try { 
Class.forName(driver); 
Connection con = DriverManager.getConnection(url,"user","abc"); 
PreparedStatement state = con.prepareStatement("UPDATE supplier SET sname='" + txtname.getText()+"' , add='"+txtadd.getText()+"' WHERE sid ='" +txtid.getText() + "'"); 
state.executeUpdate(); 
JOptionPane.showMessageDialog(null, "Your Record sucessfully Updated"); 
}catch (Exception ex) { 
JOptionPane.showMessageDialog(null, ex); 
} 

을하지만, 나는 다음과 같은 오류가 점점 오전 :

com.mysql.jdbc.exceptions.jdbc4.MySQL SyntaxErrorException :

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 'add=kegalle'where sid=001" at line 1

내가 그것을 어떻게 해결할 수를 다음과 같이 업데이트 문은 무엇입니까?

+2

당신은 ... 설정하지 왜 PerparedStatement (..) 대신에 일반 텍스트의 호출을 사용하는 경우? – kosa

답변

2

당신은 BTW 당신이 준비된 문을 제대로 사용하지 않는 역 따옴표

UPDATE supplier 
SET sname='" + txtname.getText()+"', `add` = ... 
       here ---------------^---^ 

add 같은 reserved words in MySQL을 탈출해야합니다.

+0

@ user2507358 : 먼저 'add'를 이스케이프 처리해야합니다. 그런 다음 * prepared statements *를 살펴 봐야합니다. Java 및 JDBC에서 사용하기위한 [자습서] (http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html). –

+0

기다려주십시오. JDBC 연결을 사용하여이 코드를 만들었습니다. 그래서 나는 그것을 완전히 다른 질문으로 올리고있다. 그 게시물에 대답하십시오. 한 번에 링크를 게시 할게요. – Dilini

+0

이 링크 – Dilini

1

문제는 사용자가 사용하는 방법 인 것 같습니다. PreparedStatement. 이 시도 :

PreparedStatement state = con.prepareStatement("UPDATE supplier SET sname = ?, add = ? WHERE sid = ?"); 
state.setString(1,txtname.getText()); // sname (parameter 1) 
state.setString(2,txtadd.getText()); // add (parameter 2) 
state.setString(3,txtid.getText()); //sid (parameter 3) is actually a varchar? 
state.executeUpdate(); 
+1

나는 당신의 방식대로 그것을 또한 고쳤습니다. :) – Dilini