2017-02-26 6 views
-1

このコードの問題点は何ですか?jdbcを使用したsqlexceptionのgenralエラー

常にsqlexceptionの一般的なエラーを表示するか、デバッグプロセスに入ります。

package jdbc; 

import java.sql.CallableStatement; 
import java.sql.Connection; 
import java.sql.DriverManager; 


public class FunctionDemo { 
    public static void main(String[] args) { 
     try { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      Connection c = DriverManager.getConnection("jdbc:odbc:Data","Kanan","kanu"); 
      CallableStatement cs = c.prepareCall("? = call func(?)"); 
      cs.setInt(1, 5); 
      cs.execute(); 
      System.out.println(cs.getInt(1)); 
     } catch (Exception e) { 
      // TODO: handle exception 
      System.out.println(e); 
     } 
    } 
} 
+3

まあ、以前はJDBC-ODBCブリッジが削除されました。どのバージョンのJavaを使用していますか?そしてあなたの「例外」は何を言っているのですか?ああ、 'cs.setInt(2,5);' –

+0

SQL Serverを使用する場合は、ODBCではなくmssql-jdbcドライバを使用する必要があります。 –

答えて

1

あなたがoutパラメータが何であるかを指定するためにすべき二つの問題、最初あなたが{}を欠場、を持っているが、あなたのプログラムは次のようになりますので、私はそれINTEGER検討する、次のとおりです。

String query = "{ ? = call func(?)}"; 
CallableStatement statement = connection.prepareCall(sql); 

//set the return parameter 
cs.registerOutParameter(1, Types.INTEGER); 

//your function take an int in the second position not in the 1st 
cs.setInt(2, 5); 
cs.execute(); 

System.out.println(cs.getInt(1)); 

希望すると、これが役立ちます。

関連する問題