java 调用存储过程 5
部分主要代码如下,执行报错:Exceptioninthread"main"java.lang.ClassCastException:[BatJDBCHelloWorld5...
部分主要代码如下,执行报错:Exception in thread "main" java.lang.ClassCastException: [B
at JDBCHelloWorld5.main(JDBCHelloWorld5.java:52)
请大侠帮忙看看问题出在哪(存储过程只有一个输入参数,执行存储过程是select出一些记录)
CallableStatement proc = conn.prepareCall("{ ?=call proc_GetUserRe(?) }");
proc.setString("UserCode", "Wallace.He"); proc.registerOutParameter(1,java.sql.Types.OTHER);
proc.execute();
ResultSet rs= (ResultSet) proc.getObject(1);
while (rs.next()) {
String name = rs.getString(1);
System.out.print(name + " was " + name + " years old.");
}
数据库我用的sqlserver2005,我将ResultSet rs= (ResultSet) proc.getObject(1);改成ResultSet rs = proc.getResultSet();就能执行成功。不知2者的区别和具体的使用情况是啥呢 展开
at JDBCHelloWorld5.main(JDBCHelloWorld5.java:52)
请大侠帮忙看看问题出在哪(存储过程只有一个输入参数,执行存储过程是select出一些记录)
CallableStatement proc = conn.prepareCall("{ ?=call proc_GetUserRe(?) }");
proc.setString("UserCode", "Wallace.He"); proc.registerOutParameter(1,java.sql.Types.OTHER);
proc.execute();
ResultSet rs= (ResultSet) proc.getObject(1);
while (rs.next()) {
String name = rs.getString(1);
System.out.print(name + " was " + name + " years old.");
}
数据库我用的sqlserver2005,我将ResultSet rs= (ResultSet) proc.getObject(1);改成ResultSet rs = proc.getResultSet();就能执行成功。不知2者的区别和具体的使用情况是啥呢 展开
4个回答
展开全部
Exception in thread "main" java.lang.ClassCastException: [B
at JDBCHelloWorld5.main(JDBCHelloWorld5.java:52)
意思是:类型强制转换错误,本来是一个int类型的值,你用一个集合装载,就会抛出异常(举例)
代码52行,估计ResultSet rs= (ResultSet) proc.getObject(1);
是这一行有问题
引用:"执行存储过程是select出一些记录",说明是一个集合.这个集合,
是个map类型的
你用的是什么数据库?
我将ResultSet rs= (ResultSet) proc.getObject(1);改成ResultSet rs = proc.getResultSet();就能执行成功
proc.getObject(1):是获得具体的类型对象,是具体的类型哦
proc.getResultSet():是获得输出的结果,不明确是什么类型.可以说底层封装的是map对象.这个map对象具体放了什么,还是因你查询sql而定,
在oracle,可能是某个实体,在mysql.sqlserver 可能就不是了.
at JDBCHelloWorld5.main(JDBCHelloWorld5.java:52)
意思是:类型强制转换错误,本来是一个int类型的值,你用一个集合装载,就会抛出异常(举例)
代码52行,估计ResultSet rs= (ResultSet) proc.getObject(1);
是这一行有问题
引用:"执行存储过程是select出一些记录",说明是一个集合.这个集合,
是个map类型的
你用的是什么数据库?
我将ResultSet rs= (ResultSet) proc.getObject(1);改成ResultSet rs = proc.getResultSet();就能执行成功
proc.getObject(1):是获得具体的类型对象,是具体的类型哦
proc.getResultSet():是获得输出的结果,不明确是什么类型.可以说底层封装的是map对象.这个map对象具体放了什么,还是因你查询sql而定,
在oracle,可能是某个实体,在mysql.sqlserver 可能就不是了.
展开全部
类型转换错误。。
应该是ResultSet rs= (ResultSet) proc.getObject(1);这一行
proc.getObject(1)这个并不是ResultSet类型的。。
你把他强制转换成ResultSet运行的时候就会报这个异常的。。
应该是ResultSet rs= (ResultSet) proc.getObject(1);这一行
proc.getObject(1)这个并不是ResultSet类型的。。
你把他强制转换成ResultSet运行的时候就会报这个异常的。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调用存储过程得直接取得Connetion对象,用到CallableStatement这个对象,Connetion中有个方法: CallableStatement prepareCall(String sql) 。 其中的sql就是存储过程调用时字符串形式: {call <procedure-name>...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
的确就是ResultSet res =(ResultSet)proc.getObject(1);这块的错误
这块你使用了强制类型转换。因此报了错误。。不能强制转换为ResultSet
这块你使用了强制类型转换。因此报了错误。。不能强制转换为ResultSet
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询