Java 使用jdbc的sqlexception中出现一般错误

Java 使用jdbc的sqlexception中出现一般错误,java,sql-server,jdbc,Java,Sql Server,Jdbc,这段代码有什么问题 它总是显示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 {

这段代码有什么问题

它总是显示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);
        }
    }
}

你有两个问题,<强>第一< /强>你错过了<代码> {} /代码>,<强>第二版>强>你应该指定什么是out参数,我会认为它是整数,所以你的程序应该是这样的:

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

希望这能对您有所帮助。

好吧,JDBC-ODBC网桥不久前被删除了,您使用的是什么版本的Java?你的
异常
到底说了什么?噢,和
cs.setInt(2,5)如果使用SQL Server,则应使用mssql jdbc驱动程序,而不是ODBC。