2017-10-04 2 views
-1

최근에 JDBC를 내 작업에 통합하기 시작했습니다.JDBC SQL이 여러 행으로 쿼리를 실행합니다.

JDBC에서 다음 SQL 행을 실행하려고합니다.

DECLARE @a int 
SET @a = 1 
    UPDATE ptable SET p = @a, @[email protected]+1 WHERE joined = 1 

자바 코드는 다음과 같습니다

c = "DECLARE @a int " 
+ "SET @a = 1 " 
+ "UPDATE ptable SET p = @a, @[email protected]+1 WHERE joined = 1"; 
    try { 
     stmt.executeQuery(c); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

내가 잘못된 방법을 사용하고 있는지 확실하지 않습니다. 기본적으로 정수 값을 저장하는 열 p가 있습니다. 셀의 수와 상관없이 각 행을 1 씩 증가시킵니다. 증가분으로 모든 행을 업데이트하려고하면 첫 행을 취하여 각 행을 개별적으로 증가시키는 대신 동일한 값으로 설정합니다.

+0

MySQL의 또는 SQL 서버 @a int'를 선언'때문에 그런 식으로 –

답변

0

SQL 쿼리를 수행하려는 대상이 올바르지 않습니다 (SQL Server를 사용하고 있다고 가정합니다).

당신이 1 그 경우 p와 증가를 먹고 싶어
DECLARE @a int 
SET @a = 1 
    UPDATE ptable SET p = p + @a 
    WHERE joined = 1 

, 나는 확실하지 않다 : 당신이 1 각 행을 증가하려는 경우에 상관없이 셀의 수는 쿼리가 다음과 같이해야하는지 없다 당신은 그냥 보이는 자바 코드에서 1

UPDATE ptable SET p = p + 1 
WHERE joined = 1 

을 사용할 수 있습니다 @a 당신은 변수를 필요로하는 이유 : 유효하지 않은 MySQL의 코드 우리는

c = "UPDATE ptable SET p = p + 1\n" 
    "WHERE joined = 11"; 
try { 
    stmt.executeQuery(c); 
} catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

그 진술은 p로 결정한 첫 번째 값을 취하고 모든 행을 WHERE 부분이 적용되는 값으로 업데이트합니다. 사용자가 시스템에서 활성화되어 있고 P가 증가한 경우 BIT 열에 가입했는지 추적하고 싶습니다. – Shane

+0

username 열을 각 행의 값을 변경할 수있는 기본 키로 만들었지 만 여전히 같은 방식으로 동작합니다. – Shane

관련 문제