`
midstr
  • 浏览: 33465 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java调用存储过程的传递Date参数的问题

阅读更多
建了一个存储过程
create procedure PR_YDFT_GETFT_TIME        
  
@AJLB      tinyint,            -- 案件类别           
  @AJBHLIST  varchar(1500),      -- 案件编号列表
  @KSSJ      datetime,           -- 开始时间
  @JSSJ      datetime            -- 结束时间 

as 
begin
…………
select BH, AH from K_ZS..B_ZX where(这里返回一个结果集)
end

在java代码中如下调用(时间类型为java.sql.Date),即使数据有数据,也不能正确返回结果集:
 public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
     
//………………                                                
     cs.setDate(3new java.sql.Date(kssj.getTime()));
     cs.setDate(
4new java.sql.Date(jssj.getTime()));
     
//………………                                                                                    
}
但是将方法改为如下(时间类型为String),就可以正常返回结果集:
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
    
//………………
     cs.setString(3, kssj);
    cs.setString(
4, jssj);
    
//………………                                                                                      
  }


   
另外在sybase的sqladv中如下两种调用方式均可正确返回结果:
use K_RW
go
PR_YDFT_GETFT_TIME 
2, "109052298;", "2008-08-19 14:00:00", "2008-08-19 17:00:00"
use K_RW
go
declare @KSSJ datetime 
declare @JSSJ datetime 
select @KSSJ = convert(datetime,"2008-08-19 14:00:00")
select @JSSJ =  convert(datetime,"2008-08-19 17:00:00")
execute PR_YDFT_GETFT_TIME 2, "109052298;", @KSSJ ,@JSSJ
在java代码中调用只是将java.sql.Date参数类型改为String传递就能正常返回结果集,是不是因为sybase的驱动问题


问题原因找到了,是因为使用cs.setDate()给数据库传参数只会日期部分。
如果改用如下代码就可以:
cs.setTimestamp(3new java.sql.Timestamp(dKssj.getTime()));
cs.setTimestamp(
4new java.sql.Timestamp(dJssj.getTime()));
cs.setTimestamp()可以将日期和时间部分都传给数据库。
分享到:
评论

相关推荐

    java调用oracle存储过程

    因为Java的Date和Oracle的TIMESTAMP有时会有类型转换问题,所以自定义PropertyEditor可以帮助我们在Java对象和数据库之间进行类型转换,确保数据的准确传递。 总结起来,Java调用Oracle存储过程涉及到JDBC、数据库...

    java调用存储过程实现批量入库.docx

    在Java中,我们使用JDBC(Java Database Connectivity)来连接数据库并调用存储过程。以下是一个示例: ```java import java.sql.*; import oracle.jdbc.OraclePreparedStatement; public class Test4 { public ...

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式.docx

    转换`java.util.Date`到`java.sql.Date`非常简单,只需要调用`java.sql.Date`的构造器,并传递`java.util.Date`对象的时间戳即可。 ```java java.util.Date utilDate = new java.util.Date(); java.sql.Date sql...

    Java参数传递PPT

    Java参数传递机制是编程中的重要概念,尤其是在Java中,它对于理解如何在方法间操作数据至关重要。本PPT深入探讨了这一主题,旨在帮助学习者彻底理解Java中的参数传递方式。 首先,我们要回顾面向对象的基本概念。...

    Java调用kettle转换

    ### Java调用Kettle转换详解 #### 一、引言 在数据处理领域,Pentaho Data Integration(PDI),通常被称为Kettle,是一款非常强大的开源ETL工具,用于完成数据抽取、转换与加载(Extract, Transform, Load)任务...

    jsp分页和存储过程

    - **调用存储过程**:在Java代码中调用存储过程,传入相应的参数,获取结果集。 - **处理结果集**:将结果集转换为Java对象列表,供前端展示使用。 ##### 3. 示例代码(MySQL) ```sql DELIMITER // CREATE ...

    Oracle存储过程.pdf

    3. 减轻网络流量:如果某一操作涉及的SQL语句被组织成存储过程,那么客户端只需调用该存储过程,网络中传递的只是调用语句,而不是多条SQL语句,从而减少了网络流量,降低了网络负载。 4. 安全机制的实现:系统管理...

    oracle储存过程

    而在Java中,可以使用`CallableStatement`对象来调用存储过程: ```java Connection conn = null; CallableStatement cstmt = null; conn = DriverManager.getConnection(url, user, password); String procedure =...

    java基础课件 java入门课件

    学习如何定义和调用函数,理解参数传递机制,以及如何处理返回值,这些都是必不可少的技能。同时,熟悉Java集合框架,如ArrayList、LinkedList、HashMap等,对于数据存储和处理至关重要。 异常处理是Java程序中的...

    java中计算两个日期相差几天

    此外,还有一个`main`方法用于调用`dateDiff`方法并传递参数。 ### 代码详解 1. **创建SimpleDateFormat对象** ```java SimpleDateFormat sd = new SimpleDateFormat(format); ``` `SimpleDateFormat`是Java...

    解析Date & Calendar类

    Date主要用于存储和传递时间值,而Calendar则用于操作和计算日期。在实际编程中,结合使用这两个类及其相关类,可以满足各种日期和时间的需求。了解和熟练掌握它们的用法,对于Java开发者来说至关重要。

    Date与Calendar详解

    在Java编程中,`java.util.Date`类是用于表示特定时刻的类,它以自格林尼治时间(GMT)1970年1月1日午夜以来经过的毫秒数来存储日期和时间。这一设计允许程序处理从该基准时刻前后的任何日期和时间,覆盖了从史前到...

    Oracle EBS创建并发请求

    P_in1 是一个输入参数,用于传递参数给存储过程。 二、定义执行程序菜单 在 Oracle EBS 中,执行程序菜单是用于定义并发请求的执行程序的。系统管理员可以在系统管理员/并发/程序/可执行菜单中定义执行程序菜单。...

    狂神说Java笔记资料

    这个章节将阐述方法的定义、调用、参数传递以及返回值等重要知识点。 5. **数组**:在Java中,数组是一种存储同类型数据的集合。这部分将详细解释一维和多维数组的创建、遍历和操作,以及如何使用数组处理数据。 6...

    Jsp:useBean中字符串转化为Date类型的操作方法

    3. 如果你有一个属性(比如`date`)需要存储这个转换后的日期,你可以将其设置为`convertStringToDate()`方法的返回值: ```java public class MyBean { private Date date; public void setDateFromStr(String ...

    java基础面试题.doc

    ) 声明每个关键字的作用分别是:public 表示 main 方法对 Java 环境可见,static 表示 Java 平台调用这个方法时不会创建这个类的一个实例,void 表示 main 方法没有返回值,String args[] 表示命令行传进参数的类型...

    Java语言规范.基于 Java SE 8

    Lambda表达式是一种简洁的表示匿名函数的方式,可以作为参数传递,或者存储在变量中。这大大简化了处理集合、事件和多线程等场景的代码。 2. **方法引用和构造器引用**:与Lambda表达式紧密相关的是方法引用和构造...

    《HEADFIRSTJAVA》--深入浅出Java说明与归纳.pdf

    Java中的参数传递是按值传递,意味着方法接收的是参数值的副本。 4. Java类和对象:类是创建对象的模板。Java中的类可以继承自其他类,实现了is-a关系(IS-A)。类可以通过关键字extends来继承父类的属性和方法。...

    java基础pdf文件

    初学者需要学会如何定义和调用函数,理解参数传递以及返回值的概念。同时,了解类和对象的概念至关重要,因为Java是一种面向对象的语言。类是对象的模板,它定义了对象的状态(即数据成员)和行为(即成员函数)。...

Global site tag (gtag.js) - Google Analytics