2017-05-04 8 views
1

어떤 이유로 든 방금 삽입 한 필드에서 데이터를 가져 오려고합니다. 그리고 명확해야 : 아니, 난 "ID를 삽입"을 얻을 수있는 방법을 찾고 아니에요.SQL Server : JAVA에서 Insert로 "OUTPUT"을 얻는 방법?

예를 들어, 나는 테이블은 "회원"라는 한, 나는 다음과 같이 삽입을 수행

  • INSERT INTO Members (ID, NAME, PHONE, BIRTH, CREATE_DATE) OUTPUT Members.CREATE_DATE VALUES (NEXT VALUE FOR SeqID, ?, ?, ?, getdate());

이 SQL 잘 작동하고 나에게 내가 SQL에서 원하는 CREATE_DATE을 제공 조치.

내 질문은 : 어떻게 얻으려면 CREATE_DATE JAVA의 prepared-statement를 사용하고 있습니까?

나는, ResultSet의 사용, 그것은이다 "CREATE_DATE"때문에 권리도 보이지 않는

 con = ds.getConnection(); 
     pstmt = con.prepareCall(INSERT); 

     pstmt.setString(1, name); 
     pstmt.setString(2, phone); 
     pstmt.setString(3, birth); 

     ResultSet rs = pstmt.executeQuery(); 

     if(rs.next()) System.out.println(rs.getString("CREATE_DATE")); 

그리고 registeroutparameter "문은 결과 집합을 반환하지 않았습니다"나에게 말했다 것을하지 얻기 위해 시도한 " ? ". OUTPUT에서 데이터를 가져올 수있는 방법이 있습니까?

+0

삽입 작업은 데이터를 db에 추가하고 상태를 반환합니다. CREATE_DATE를 원하면 CREATE_DATE를 얻기 위해 필수 매개 변수를 전달하여 다른 SELECT 쿼리를 작성해야합니다. – kosa

답변

0

이되지 않습니다 :

pstmt = con.prepareCall(INSERT); 

당신은 prepareStatement 사용할 수 있습니다 또한

pstmt = con.prepareStatement(INSERT); 

가 : 삽입를 선택하지 않는 대신 pstmt.executeQuery();의 그것이 INT 아닌를 반환 pstmt.executeUpdate();을해야 ResultSet. 쿼리 성공 여부를 확인하려면 다음을 사용해야합니다.

int s = pstmt.executeUpdate(); 
if(s > 0){ 
    //success 
} 

하지만 내 질문은 : JAVA의 prepared-statement를 사용하여 CREAT_DATE를 얻는 방법은 무엇입니까?

당신은 서버 측 컴파일이 별도의 삽입에 대한 문 하나를 선택

+1

아우, 이것은 슬프다. 나는 오라클이 돌아 오는 것과 같이 그것을 얻을 수 있다고 생각했다. – Kaninchen

0

준비된 문에 대한 두 번째를 사용해야하고, 매개 변수는 GETDATE 기능은 서버 측을 실행하고 반환되지 않습니다 클라이언트가 제공된다 클라이언트에게.

  • 이 행을 삽입하고 날짜를
  • 컴퓨팅 날짜 클라이언트 측을 반환하고 서버에
  • 요청을 보내 출력 매개 변수와 프로 시저를 작성 :

    많은 옵션이 날짜 클라이언트 측을 얻으려면 선택 쿼리를 사용하는 서버이지만이 경우 두 번의 호출이 필요합니다.