2012-10-11 4 views
0

JDBC 드라이버에 문제가있는 것 같습니다. Java에서 호출 가능한 문이 작동하지 않습니다.

나는 다음과 같은 자바 코드를 실행하려고 해요 :

String sql = "{call get_samp_stud_no_out (?,?,?)}"; 
CallableStatement call = conn.prepareCall(sql); 
call.setInt("objId1", 1); 
call.setInt("objId2", 2); 
call.setInt("objId3", 3); 
ResultSet results = call.executeQuery(); 

을 내가 받고 있어요 :

java.lang.AbstractMethodError: com.sybase.jdbc2.jdbc.SybCallableStatement.setInt(Ljava/lang/String;I)V 

BTW는 Sybase 데이터베이스를. jconn2.jar과 jconn3.jar을 모두 시도했습니다. 문자열 parameteres 받아

그리고 다른 저장된 프로 시저 :

String sql = "{call get_samp_stud_no_name (?,?,?)}"; 
    CallableStatement call = conn.prepareCall(sql); 
    call.setString("objId1", "nappa"); 
    call.setString("objId2", "vegeta"); 
    call.setString("objId3", "frieza"); 
    ResultSet results = call.executeQuery(); 

그리고 이에 대한 예외는 :베이스 드라이버에서

Exception in thread "main" java.lang.AbstractMethodError: com.sybase.jdbc2.jdbc.SybCallableStatement.setString(Ljava/lang/String;Ljava/lang/String;)V 
+0

이 get_samp_stud_no_out에 대한 인수가 정수를하는 건가? – Prathap

+0

예 정수입니다. 그리고 나는 또한 문자열 parameteres 받아 다른 저장된 proc 동일한 시도했다 및 동일한 예외가 발생합니다. –

답변

0

이 명명 된 매개 변수에 문제가 많이있다,이 원인은 생각 너의 문제.
시도 :

call.setString("@objId1", "nappa"); 
call.setString("@objId2", "vegeta"); 
call.setString("@objId3", "frieza"); 

또는

call.setString(1, "nappa"); 
call.setString(2, "vegeta"); 
call.setString(3, "frieza"); 
+0

첫 번째 동일한 예외를 반환하고 위치 매개 변수 begin.But에서 작동하는 첫 번째 구문을 작동하려면 괜찮 았고. –

+0

또 다른 두 가지 옵션 : 1. call.execute() 사용 2. 존재하는 경우 param 등록 – urir

+0

시도한 call.execute()에서 동일한 예외가 발생하고 proc이 아무 것도 반환하지 않습니다. –

0

는 다음과 같이 코드를 수정하십시오 :

String sql = "{?=call get_samp_stud_no_out (?,?,?)}"; 
CallableStatement call = conn.prepareCall(sql); 

call.registerOutParameter(1, Types.INTEGER); 
call.setInt(2, 10); 
call.setInt(3, 20); 
call.setInt(4, 30); 
call.execute(); 
int retVal = call.getInt(1); // return value 
call.close(); 
+0

이 예외는 동일한 예외를 가지고 있습니다. 예외는 다음 행을 가리 킵니다. call.setInt ("objId1", 2); –

+0

흠, 이제 수정 된 코드를 사용해 볼 수 있습니까? (executeQuery()를'execute()'로 대체하고) 첫 번째 매개 변수가 position이고 두 번째 매개 변수가 사용자의 값이므로'setInt' 호출 순서를 변경했습니다. – anubhava

+0

시도해 보니 동일한 예외가 있습니다. –

관련 문제