Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java调用存储过程时出错-无效的JDBC数据类型-10_Java_Sql Server 2008_Stored Procedures_Jdbc - Fatal编程技术网

从java调用存储过程时出错-无效的JDBC数据类型-10

从java调用存储过程时出错-无效的JDBC数据类型-10,java,sql-server-2008,stored-procedures,jdbc,Java,Sql Server 2008,Stored Procedures,Jdbc,我有一个java类,我从中连接到远程机器上的SQL Server 2008。我可以使用一个类检索数据,这意味着连接工作正常。 但当我尝试运行存储过程时,它会给我 异常为com.microsoft.sqlserver.jdbc.SQLServerException-无效的jdbc数据类型-10 找到下面的代码。有人能帮我吗?我已经将sqljdbc、sqljdbc4 JAR添加到我的类buildpath中 CallableStatement cs=null; con = SqlConnectionM

我有一个java类,我从中连接到远程机器上的SQL Server 2008。我可以使用一个类检索数据,这意味着连接工作正常。 但当我尝试运行存储过程时,它会给我

异常为com.microsoft.sqlserver.jdbc.SQLServerException-无效的jdbc数据类型-10

找到下面的代码。有人能帮我吗?我已经将sqljdbc、sqljdbc4 JAR添加到我的类buildpath中

CallableStatement cs=null;
con = SqlConnectionManager.getConnection();
cs = con.prepareCall("{call dbo.PKG_ER_SEL.sp_ERGetJobCode(?,?,?)}");
cs.setInt(1, orgId);//v_org
cs.setString(2, compCode);//v_type
cs.registerOutParameter(3, OracleTypes.CURSOR); //getting exception here
cs.executeUpdate(); 
ResultSet resultSet = (ResultSet) cs.getObject(3);
if (resultSet != null) {
    while ( resultSet.next() ) {
    JobVO  obj = new JobVO();
                                  obj.setCode(resultSet.getString("CODE"));
                             obj.setName(resultSet.getString("NAME"));
     seqAttList.add(obj);
    }
    resultSet.close();
    }
    }catch(Exception e){
e.printStackTrace();
}finally{
SqlConnectionManager.releaseConnection(con);
 }

感谢JAVA中的

从对语句对象的executeQuery调用中获取结果集。ResultSet实例相当于T-SQL中的游标。阅读有关使用ResultSet的更多信息


对于SQL Server,您可以调用/执行一个存储过程,详细说明如下。一个简单的例子是,如果您的存储过程称为my_存储过程,则执行my_存储过程。

尝试使用cs.getObjectjava.sql.Types.XXXXX。我将行更改为ResultSet ResultSet=ResultSet cs.getObjectjava.sql.Types.INTEGER-但是我得到了相同的errorcs.registerOutParameter3,OracleTypes.CURSOR;在这里使用java.sql.Types.XXXXX使用适当的类型,因为您在数据库中有映射链接,我没有看到类似游标的内容,但@Smit我不太明白,您能解释一下它到底应该是什么吗/?请看您registerOutParamaeter的类型为OracleTypes.CURSOR,它的指定值为-10请看我在评论中给您的链接,您正在调用cs.getObject3,我认为这会产生冲突。如果使用相同的值,您将获得成功。但是既然您有整数数据类型,为什么不直接调用cs.getInt呢