当前位置:  技术问答>java相关

Mircosoft SQL Server是不是不支持Date类型的,为什么我用PreparedStatement中的 setDate 方法就会出错,而用DB2却没有出错,如果用SQL S

    来源: 互联网  发布时间:2015-08-16

    本文导语:  Mircosoft SQL Server是不是不支持Date类型的,为什么我用PreparedStatement中的 setDate 方法就会出错,而用DB2却没有出错,如果用SQL Server执行要不要进行什么转换的? ---------------------- 原程序执行到的出错行是: myprestatem...

Mircosoft SQL Server是不是不支持Date类型的,为什么我用PreparedStatement中的 setDate 方法就会出错,而用DB2却没有出错,如果用SQL Server执行要不要进行什么转换的?
----------------------
原程序执行到的出错行是:

myprestatement.setDate(1,getMyDate());

-----------------------
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有执行可选特性
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6031)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6188)
        at sun.jdbc.odbc.JdbcOdbc.SQLBindInParameterDate(JdbcOdbc.java:752)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setDate(JdbcOdbcPreparedStatement.java:833)

用setTime也有同样的错误,但如果用DB2做数据库的话,却可以成功执行上面语句,现在是用SQL Server,就出现错误!请问如何转换?

|
SQL Server中并没有Date和Time这两种类型的数据,而只有一个smalltime和time类型,而这两种类型仅仅只是表示时间范围的不同而已,其他的都没有区别,都是日期加上时间的表示,对应到标准的SQL类型上,应该只有TimeStamp了,就是时间戳,它能精确到毫秒,其实存储的时候就是一个长整形而已。所以你要在SQL Server上存储Date或是Time,就只能用TimeStamp,你要做个变换就可以了,然后取出来的时候取舍相应的部分就可以了。ResultSet.getTimestamp或是PreparedStatement.setTimestamp()就可以了。这点我觉得是比较郁闷的。

|
pls take a try with 
"timestamp"

|
用setString

|
myprestatement.setDate(1,getMyDate());中的getMyDate()的值应该是java.sql.Date型的,而不是java.util.Date型。

|
或者实在不行你就用getMyDate().toLocaleString(),然后用setString()方法,一定可以的

|
see the javadoc of jdbc of sqlserver firstly

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在Java中,用Mircosoft SQL Server数据库,请问要进行日期字段的读取,用( ResultSet rs ; rs.getDate(1),其中1代表相应的字段为 DateTi


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3