CallableStatement调用sql server存储过程的问题(是个技术问题啊,怎么解决啊?)

tansroy 2003-11-24 10:09:08
java程序是这样的:
...
CallableStatement toesUp = null;
toesUp= conn.prepareCall("{call pagination(?,?,?,?,?,?) }");
toesUp.setString(1,strPerpagenumber);
toesUp.setString(2,strPagenumber);
toesUp.setString(3,strTablename);
toesUp.setString(4,strOrderby);
toesUp.setString(5,strSqlCondition);
toesUp.registerOutParameter(6,java.sql.Types.VARCHAR);
try
{
toesUp.execute();
ResultSet rs = (ResultSet) toesUp.getResultSet();
strTotalresult=toesUp.getString(6);
ResultSetMetaData rsmd = null;
...
}

SQL SERVER的存储过程是这样的
...
create procedure pagination
@perpagenumber varchar(10)='20',
@pagenumber varchar(10)='1',
@tablename varchar(20)='tmp_t_cs_infos_his',
@orderby varchar(200)='order by cust_code,backupdate',
@sqlcondition varchar(200)=''
@totalresult varchar(200) output
as
begin
...
select * from tmp_t_cs_infos_his
select @totalresult=count(*) from tmp_t_cs_infos_his
end
我跟踪调试的时候,会发现ResultSet rs = (ResultSet) toesUp.getResultSet()的rs为NULL值,但存储过程的返回参数的值能取到,不是空的。请高手帮帮忙啊
如果我去掉“存储过程的返回参数”就OK了,存储过程的返回的记录集就能取到(rs就不为空了)请问是什么原因啊?有解决的方法吗?
...全文
147 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
irelandcoffe 2004-02-01
  • 打赏
  • 举报
回复
关注中………………
haley_hj 2003-12-06
  • 打赏
  • 举报
回复
等你的记录集的值抓完之后再取输出的参数就可以了!

我已经测试通过!
try
{
toesUp.execute();
ResultSet rs = (ResultSet) toesUp.getResultSet();
while(rs.next()) {
......
}
strTotalresult=toesUp.getString(6);
...
}
NewDev 2003-11-26
  • 打赏
  • 举报
回复
把过程中的结果集放到一个游标中,返回一个游标没问题了。
然后调用过程可以了。
tollers 2003-11-26
  • 打赏
  • 举报
回复
结果集怎么放到游标中?楼上的能否给多点提示?
tollers 2003-11-25
  • 打赏
  • 举报
回复
我今天也遇到这个问题了,我看了一下,主要是从存储过程中返回记录集后,再取存储过程返回值后,ResultSet会自动close,CallableStatement里有个KEEP_RESULTSET_OPEN参数,是static int的,帮助上写该参数的意思是可以保持ResultSet为open状态,但我也不知道怎么用。我所知道的就这么多了,若你找到答案后希望你也发条短消息给我,我也被这个问题困扰
tansroy 2003-11-24
  • 打赏
  • 举报
回复
哪位仁兄知道解决这个问题啊?
tansroy 2003-11-24
  • 打赏
  • 举报
回复
结果还是不行啊
sunweijia 2003-11-24
  • 打赏
  • 举报
回复
试试这个:CallableStatement cstmt = Conn.prepareCall (SQL,java.sql.ResultSet.TYPE_SCROLL_SENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);

ResultSet rs = cstmt.executeQuery();
tansroy 2003-11-24
  • 打赏
  • 举报
回复
难道就没有办法了吗?
凋零的老树 2003-11-24
  • 打赏
  • 举报
回复
我也遇到过,后来是用别方法解决的
tansroy 2003-11-24
  • 打赏
  • 举报
回复
请各位高手帮忙看看啊 诊断一下下啊
haibozhang 2003-11-24
  • 打赏
  • 举报
回复
sql server中具体我不知道,我用oracle的时候我是让他直接返回的是结果集合,页就是游标,这样一切ok!
tansroy 2003-11-24
  • 打赏
  • 举报
回复
没人解决啊 真是那么难吗?
目录 第1章 JDBC概述 1.1 JDBC简介 1.2 JDBC3.0规范 1.3 JDBC3.0 API的新特点 1.3.1 JDBC 3.0 API的一致性 1.3.2 不赞成的API 1.4 JDBC 3.0中的类和接口 1.4.1 java.sql包中的类和接口及其使用 1.4.2 javax.sql包中所含内容及其使用 1.5 JDBC驱动程序简介 1.5.1 JDBC-ODBC 桥和ODBC驱动程序 1.5.2 本地API部分Java驱动程序 1.5.3 JDBC网络纯Java驱动程序 1.5.4 本地协议纯Java驱动程序 1.5.5 JDBC驱动程序的比较 1.6 本章小结 第2章 JDBC开发环境及配置 2.1 数据库系统 2.1.1 SQL数据库数据库基本操作语句 2.1.2 Microsoft SQL Server数据库设计及ODBC配置 2.1.3 Oracle 数据库的基本说明及其使用简介 2.1.4 MySQL的安装及使用简介 2.2 使用JDBC连接数据库 2.2.1 SQLJ基本知识 2.2.2 用PL/SQL和Java建立应用程序的基本知识 2.2.3 PL/SQL和Java的特性 2.2.4 PL/SQL和Java的实际开发应用实例 2.2.5 Java连接各类数据库的程序代码 2.3 Web应用服务器 2.3.1 Tomcat的安装及系统文件设置 2.3.2 WebSphere简介 2.3.3 WebLogic的安装和配置 2.3.4 Resin的安装与配置 2.4 Java开发环境 2.4.1 JDK设置 2.4.2 JBuilder的配置 2.4.3 Cafe的配置 2.4.4 JDeveloper的配置 2.4.5 FORTE FOR JAVA简介 2.5 JDBC开发调试技巧 2.6 本章小结 第3章 JDBC3.0 API数据库开发基本操作 3.1 数据库用例说明 3.2 与数据库建立连接 3.2.1 JDBC URL 3.2.2 连接事件(Connection Event) 3.2.3 连接事件监听器(Connection EventListener) 3.3 获取数据库信息 3.3.1 获取数据库详细信息 3.3.2 获取数据库基本信息 3.3.3 获取数据库中表的信息 3.3.4 获取表中各列的信息 3.3.5 获取索引的信息 3.3.6 获取数据库中各种信息的实例 3.4 Statement对象 3.4.1 Statement对象使用基础 3.4.2 获取所有记录 3.4.3 获取指定记录 3.5 修改数据库表 3.5.1 修改数据库表本身 3.5.2 修改数据库表记录 3.6 结果集 3.6.1 结果集的基本操作 3.6.2 获取结果集的信息 3.6.3 使用流获取大型数据 3.6.4 可滚动结果集 3.6.5 可更新结果集 3.7 SQL和Java数据类型转换 3.8 本章小结 第4章 JDBC 3.0 API数据库开发高级操作 4.1 预编译语句 4.1.1 PreparedStatement对象的创建 4.1.2 传递IN参数 4.1.3 传递对象参数 4.1.4 传递大型数据参数 4.2 调用存储过程对象 4.2.1 CallableStatement对象的创建 4.2.2 IN、OUT及INOUT参数的使用 4.2.3 执行CallableStatement Object对象 4.2.4 CallableStatement对象使用实例 4.2.5 SQL Server存储过程编程经验技巧 4.3 成批更新(BatchedUpdate) 4.3.1 成批更新所使用的对象 4.3.2 使用成批更新的实例 4.4 行集合对象 4.4.1 设计时行集合 4.4.2 运行时行集合 4.4.3 非标准JDBC API类的行集 4.4.4 行集合的接口 4.5 事务 4.5.1 事务提交(Commit) 4.5.2 事务使用实例 4.6 JNDI与JDBC API 4.6.1 JDBC数据源 4.6.2 实例 4.7 连接池 4.7.1 连接池数据源(Connection PoolDataSource) 4.7.2 连接池处理事件 4.7.3 三层环境下的连接池操作 4.7.4 连接池和DataSource实现 4.7.5 包含连接池的数据源配置 4.7.6 池连接对象对于语句的重新利用 4.7.7 关闭池连接语句 4.7.8 连接池使用实例 4.8 分布式事务处理 4.8.1 XADataSource接口和XAConnection接口 4.8.2 事务管理器 4.8.3 关闭连接 4.9 例外处理 4.9.1 数据访问警告(SQLWarning) 4.9.2 数据截断(DataTruncation) 4.10 高级数据类型 4.10.1 Java对象类型 4.10.2 SQL3类型 4.10.3 定制类型 4.10.4 实例 4.11 本章小结 第5章 二层结构数据库开发实例 5.1 二层结构原理 5.2 Applet访问数据库实例 5.3 Application访问数据库实例 5.4 使用Jdevelpoer工具的数据库开发实例 5.5 二层结构开发数据库的优缺点 5.6 本章小结 第6章 三层结构数据库开发实例 6.1 三层结构原理 6.2 JSP数据库操作实例 6.3 Servlet数据库操作实例 6.4 JavaBeans操作数据库实例 6.5 三层结构开发数据库的优缺点 6.6 本章小结 第7章 综合开发实例分析 7.1 UML要点与应用 7.1.1 UML定义及组织 7.1.2 UML的概念模型 7.1.3 UML的应用 7.2 用UML建模开发网上商店实例 7.2.1 对网上商店的UML建模分析 7.2.2 网上商店数据库设计 7.2.3 网上商店的程序实现 7.3 用UML建模开发图书馆系统实例 7.4 本章小结 392 第8章 JAVA与XML数据转换 8.1 XML的基础知识 8.1.1 XML的特点 8.1.2 XML文档的结构 8.1.3 XML DTD的建立与使用 8.1.4 文档显示与样式单 8.1.5 XML链接语言 8.1.6 实用XML工具概览 8.2 XML中数据与信息交换 8.2.1 XML数据源 8.2.2 XML在数据库中的应用模式 8.2.3 XML数据交换技术及应用 8.3 使用JSP和XML两种技术建设动态网站 8.3.1 XML存储数据的优点 8.3.2 XML文档中的Picture对象定义 8.3.3 JSP文档与XML的结合 8.4 用XML和XSL生成动态页面 8.4.1 建立标准的数据格式 8.4.2 生成动态XML 8.4.3 用XSL作为模板语言 8.4.4 生成HTML 8.5 从XML到Java代码的数据绑定 8.5.1 访问方式选择 8.5.2 数据绑定 8.5.3 约束数据 8.5.4 从XML获得Java 8.5.5 生成Java代码 8.5.6 完成包 8.6 使用JSP技术生成动态XML 8.6.1 JSP技术概述 8.6.2 使用JSP技术生成动态XML文档的结构 8.7 本章小结 第9章 JDBC程序开发高级技术 9.1 中文处理技术 9.1.1 Java中文处理的理论知识 9.1.2 中文处理的解决方案 9.1.3 中文处理技术程序实例 9.2 数据查询结果的分页显示技术 9.2.1 使用JavaBean和连接池实现数据分页显示 9.2.2 不用连接池不用JavaBean的分页显示 9.2.3 使用JavaBean不使用连接池的分页显示 9.2.4 用JSP和Servlet配合实现分页显示 9.3 数据库图形文件的存取技术 9.3.1 向数据库中存储图形 9.3.2 将数据库的图象二进制数据显示成图片 9.4 Java开发中的其他技术 9.5 本章小结

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧