2012-01-09 2 views
9

는 두 가지 방법 중, executeUpdate의는하지만 하나가 이상적으로 삽입 쿼리에 사용되어야하는 쿼리를 실행 할 insert into users(name, addr, city, sex, dob) values(?,?,?,?,?); 문은 모두 같은 삽입 쿼리에 가장 적합한 하나입니다 실행하는 가르쳐주세요?사용법 : executeUpdate() 또는 execute()?

+0

[PreparedStatement가 Oracle에서 성공적으로 실행되지만 Microsoft SQL에서 예외가 발생 함] 가능한 중복 (http://stackoverflow.com/questions/8786911/preparedstatement-executing-successfully-in-oracle-but-throwing-exception-in- 마이크) – axtavt

+0

각 javadoc을 읽었습니까? 대답은 거기에 있습니다. – skaffman

답변

14

반환 값은 다릅니다. ExecuteUpdate()는 갱신 된 행의 수를 리턴합니다. 이는 갱신 명령문을 실행할 때 유용 할 수 있습니다. 귀하의 경우에는 삽입하는 레코드의 수를 알기 때문에 필요하지 않습니다. 둘 중 하나를 사용할 수 있습니다.

+0

그래서 그 중 하나를 사용하는 것과 같은 이점이 없습니다. 이 경우 어떤 방법이 올바르게 사용되는지는 중요하지 않습니다. –

+0

오른쪽. 그건 중요하지 않아. – Sjoerd

+0

확인. 고마워요 :) –

2

원칙적으로 반환 값만 다릅니다. 그러나 jConnect 3을 사용하여 Sybase ASE 15.7에 액세스하는 것으로 나타났습니다. execute() 함수는 트리거가 실행될 때까지 차단하지 않고 PreparedStatement를 곧바로 닫으면 업데이트가 롤백됩니다. (1s sleep을 삽입하면 시도한 하나의 쿼리에서 작동합니다.) 대조적으로 executeUpdate()는이 문제를 겪지 않습니다. 그것은 옳은 일을하는 것으로 보이며 PreparedStatement를 닫기 전에 임의의 수면을 요구하지 않습니다.