JDBC调用Sybase存储过程,结果集总是无法返回,该怎么处理
答案:1 悬赏:50 手机版
解决时间 2021-01-12 00:29
- 提问者网友:雾里闻花香
- 2021-01-11 16:12
JDBC调用Sybase存储过程,结果集总是无法返回,该怎么处理
最佳答案
- 五星知识达人网友:举杯邀酒敬孤独
- 2021-01-11 16:33
JDBC调用Sybase存储过程,结果集总是无法返回!
java代码部分如下:
String sproc = "{ call zhouxiaobotest2(?,?,?,?)} ";
CommonDAO dao = null;
try {
dao = new CommonDAO(jndi);
Connection connect = dao.getConn();
//得到总数
rowNum = PageDiv.getCount(countSql.toString(), dao);
//设置分页信息
pageBean.setPageInfo(rowNum, pageSize);
// 获取CallableStatement语句:
CallableStatement mStatement = connect.prepareCall(sproc,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
// 传入输入参数和注册输出参数
mStatement.setString(1,sql.toString());
mStatement.setInt(2, 10);
mStatement.setInt(3, 10);
mStatement.setInt(4, 5000);
// 执行存储过程
ResultSet rs = null;
mStatement.execute();
rs = mStatement.getResultSet();
catch (Exception ex) {
ex.printStackTrace();
logger.warn(sql.toString());
} finally {
dao.destroy();
dao = null;
sproc = null;
}
存储过程如下:
create procedure zhouxiaobotest @qry varchar(16384),@ipage int, @num int,@maxpages int
as
begin
declare @execsql varchar(16384)
set @execsql = " select USER_NAME from TBL_USER "
execute (@execsql)
end
create procedure zhouxiaobotest2 @qry varchar(16384),@ipage int, @num int,@maxpages int
as
begin
select USER_NAME from TBL_USER
end
现在我的问题是调用存储过程zhouxiaobotest,mStatement.execute()始终是false;而调用zhouxiaobotest2 mStatement.execute()就是true,能得到结果集。我想知道如何修改程序使我能够调用zhouxiaobotest取得结果集(之前调试程序运行没有抛出任何异常,而且控制台运行存储过程也都正确)
java代码部分如下:
String sproc = "{ call zhouxiaobotest2(?,?,?,?)} ";
CommonDAO dao = null;
try {
dao = new CommonDAO(jndi);
Connection connect = dao.getConn();
//得到总数
rowNum = PageDiv.getCount(countSql.toString(), dao);
//设置分页信息
pageBean.setPageInfo(rowNum, pageSize);
// 获取CallableStatement语句:
CallableStatement mStatement = connect.prepareCall(sproc,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
// 传入输入参数和注册输出参数
mStatement.setString(1,sql.toString());
mStatement.setInt(2, 10);
mStatement.setInt(3, 10);
mStatement.setInt(4, 5000);
// 执行存储过程
ResultSet rs = null;
mStatement.execute();
rs = mStatement.getResultSet();
catch (Exception ex) {
ex.printStackTrace();
logger.warn(sql.toString());
} finally {
dao.destroy();
dao = null;
sproc = null;
}
存储过程如下:
create procedure zhouxiaobotest @qry varchar(16384),@ipage int, @num int,@maxpages int
as
begin
declare @execsql varchar(16384)
set @execsql = " select USER_NAME from TBL_USER "
execute (@execsql)
end
create procedure zhouxiaobotest2 @qry varchar(16384),@ipage int, @num int,@maxpages int
as
begin
select USER_NAME from TBL_USER
end
现在我的问题是调用存储过程zhouxiaobotest,mStatement.execute()始终是false;而调用zhouxiaobotest2 mStatement.execute()就是true,能得到结果集。我想知道如何修改程序使我能够调用zhouxiaobotest取得结果集(之前调试程序运行没有抛出任何异常,而且控制台运行存储过程也都正确)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯