2012-04-30 2 views
-2

를 작성하지만내가이 쿼리를 쓴 SQL 쿼리

ResultSet rs6 = stmt.executeQuery(
    "UPDATE customer SET BALANCE = BALANCE + amount WHERE MOBILENUMBER = '"+phone+"' "); 
rs6.next(); 
System.out.print("your account balance is " +rs6.getString("BALANCE")); 

금액이 잘못 무엇 double

입니다 실행 아니에요?

+0

[리틀 바비 표 (http://xkcd.com/327/)이'phone' 변수의 값을 설정되지 않았는지 확인 웹 응용 프로그램을 통해 :) – dasblinkenlight

답변

1

업데이트에는 executeUpdate을 사용해야합니다. 결과적으로 업데이트 된 행 수가 반환됩니다 (일부 임의로 업데이트 된 열이 아닌 새 값). 새로운 균형을 잡으려면 후속 쿼리를 실행해야합니다.

prepared statements도 사용하십시오. 정말 좋습니다. 당신이 균형을 (보통) 결과를 반환하지 않는

+0

감사합니다. 어떤 후속 쿼리, 예를 들어 줄 수 –

+0

후속 쿼리에 의해 나는 새로운 정보를 얻기 위해 업데이트 후 선택 쿼리를 실행하는 것을 의미합니다. – Perception

0

당신에게 단지 최선을 다하고 업데이트 명령이 아닌 명령을 선택합니다. 데이터를 정말로 업데이트하려면 대신 executeUpdate()을 사용해야합니다. 업데이트의 영향을받는 행 수를 반환합니다.

실제로 where 조건으로 지정된 행을 검색하려면 SELECT 문을 사용해야합니다. 그러면 루프 할 수있는 ResultSet이 반환됩니다.

0

UPDATE 문을 얻을 수 있도록

0

업데이트 쿼리는 결과를 반환하지 않습니다. 한 문장으로 업데이트하고 초 단위로 선택해야합니다. 또한, 매개 변수화 된 쿼리를 사용하십시오 - 이런 일이 더 좋을 것이다

PreparedStatement stmt = connection.prepareStatement("UPDATE customer SET BALANCE = BALANCE + ? WHERE MOBILENUMBER = ?"); 

stmt.setDouble(1, amount); 
stmt.setString(2, phone); 

stmt.execute(); 
stmt.close(); 

stmt = connection.prepareStatement("SELECT BALANCE from customer where MOBILENUMBER = ?"); 
stmt.setString(1, phone); 

ResultSet rs6 = stmt.execute(); 
rs6.next(); 
System.out.print("your account balance is " +rs6.getString("BALANCE")); 

rs6.close(); 
stmt.close(); 
관련 문제