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

ところで、その sybase データベースです。jconn2.jar と jconn3.jar の両方を試しました。

そして、文字列パラメータを受け入れる他のストアド プロシージャ:

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
4

2 に答える 2

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();
于 2012-10-11T10:47:54.777 に答える
0

Sybase ドライバーでは、名前付きパラメーターに多くの問題があります。これが問題の原因だと思います。
試す:

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

また

call.setString(1, "nappa");
call.setString(2, "vegeta");
call.setString(3, "frieza");
于 2012-10-11T10:41:50.073 に答える