`

一种Java调用Sybase存储过程实现取前N条数据的方法

阅读更多
一.在Sybase中创建存储过程如下:
drop procedure getPageWiseData
go
 
create procedure getPageWiseData  
(  
@sqlStr varchar(8000),  
@start int,  
@limit int 
)  
as  
DECLARE @dt varchar(10)    --生成临时表的随机数  
BEGIN  
 
--# variable to hold the first row number of the page.  
SELECT @dt= substring(convert(varchar, rand()), 3, 10)    --一个字符型的随机数  
 
SELECT @sqlStr = stuff(@sqlStr, 1, 7, 'select rownum=identity(12), ')  
SELECT @sqlStr = stuff(@sqlStr, charindex(' FROM ', upper(@sqlStr)), 6 ,' into tempdb..Lining' + @dt + ' from ')  
execute (@sqlStr)  
 
--# select the data with the calculated range for first and last row on page.  
select @sqlStr = 'select * from tempdb..Lining' + @dt + ' where rownum >= '+convert(varchar, @start)+' and rownum < '+convert(varchar, (@start+@limit))   
execute (@sqlStr)  
 
--删除临时表  
SELECT @sqlStr = 'DROP TABLE tempdb..Lining'+@dt 
EXECUTE (@sqlStr)   
END
  
二.用jdts驱动调用Sybase数据库
public class JdbcSybaseProcedure {
 public static void main(String[] args) {
  Connection conn = null;
  CallableStatement cs = null;
  try {
   Class.forName("net.sourceforge.jtds.jdbc.Driver");
   conn = DriverManager.getConnection("jdbc:jtds:sybase://192.9.190.98:4100/inner_dbs", "emp", "empemp");
   //下面的意思要调用那个存储过程,存储过程名字是getPageWiseData;
   cs = conn.prepareCall("{call getPageWiseData(?,?,?)}");
   cs.setString(1, "select * from lps_mst order by pan");
   cs.setInt(2, 1);
   cs.setInt(3, 5);
   //执行存储过程
   ResultSet rs = cs.executeQuery();
   while(rs.next()) {
    System.out.println(rs.getString("pan"));
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   try {
    cs.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }finally {
    cs = null;
   }
   try {
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }finally {
    conn = null;
   }
  }
 }
}
 
分享到:
评论

相关推荐

    java 面试题 总结

    通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出Session...

    超级有影响力霸气的Java面试题大全文档

    通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 11、EJB是基于哪些技术实现的?并说出...

    SybaseTransfer:Sybase数据库迁移

    Sybase 数据库迁移 ...过滤器 过滤器实现对目标迁移对象的一种筛选,比如要迁移指定用户模式的对象,就可以使用模式过滤器。目前程序中已经实现的过滤器有:排除过滤器、名称列表过滤器、名称过滤器、OGNL表达式

    SQL Anywhere恢复工具介绍

    UltraLite 是一种用于小型 移动和嵌入式设备的 具有同步功能的关系数据库 稳健的数据管理 强大的同步功能 直接简明的开发 多平台可用性 您可以开发和部署用于 Windows CE Palm OS 和基于 Java 的设备的 ...

    数据库管理系统(二)-真题-无答案.docx

    下述哪一种方法不属于并行数据库物理存储中常用的关系划分方法?______。 A. 轮转法 B. 投影法 C. 散列分布 D. 范围分布 13. 下列哪一条不是Sybase企业级数据库服务器的特点?______。 A. 支持联机分析处理OLAP B. ...

    数据库课程设计——图书管理系统.doc

    1.2.2 java简介 java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。 2、 Ajax...

    基于J2EE框架的个人博客系统项目毕业设计论...

    而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。 2、 Ajax...

    2009.6.19—30举办3S研讨会暨Google Earth与Google Map等仿真建模与共享及ARCGIS与遥感高级程序员培训班

    5、介绍如何使用ARCCIS9的SPATIAL ANALYST扩展模块:在栅格数据和矢量数据集成的环境下进行空间分析操作(ARCCIS在环保与流行病统计分析以及环境监测的应用为例介绍),并介绍地统计学基础以及一种先进的空间插值...

    中标麒麟服务器操作系统介绍.pdf

    中标麒麟服务器操作系统介绍 目录 中标麒麟服务器操作系统介绍 1 面向的市场客户及应用场景分析 2 成功案例介绍 4 客户价值分析 3 Linux操作系统 Linux是一种自由和开放源码的类 Unix操作系统。 基于Linux内核,使用...

    sqltoy-orm框架系统-其他

    6、提供行列转换(数据旋转),避免写复杂的sql或存储过程,用算法来化解对sql的高要求,同时实现数据库无关(不管是mysql还是sqlserver) 7、提供分组汇总求平均算法(用算法代替sql避免跨数据库语法不一致) 8、分库分表...

Global site tag (gtag.js) - Google Analytics