2017-02-26 5 views
-1

Was ist das Problem in diesem Code?general error in sqlexception mit jdbc

Es zeigt immer sqlexception allgemeinen Fehler, oder es geht in Debug-Prozess.

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

Nun, die JDBC-ODBC-Brücke wurde vor einiger Zeit entfernt - welche Version von Java benutzen Sie? Und was genau sagt deine 'Ausnahme'? Oh, und 'cs.setInt (2, 5);' –

+0

Wenn Sie SQL Server verwenden, sollten Sie den mssql-jdbc-Treiber und nicht ODBC verwenden. –

Antwort

1

Sie haben zwei Probleme, erste verpassen Sie die {}, zweite Sie sollten angeben, was die Out-Parameter ist, ich es ein INTEGER prüfen wird so Ihr Programm wie folgt aussehen sollte:

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)); 

Hoffe, das kann Ihnen helfen.

Verwandte Themen