设为首页 收藏本站
查看: 857|回复: 0

[经验分享] JDBC SQL Server 参数类型

[复制链接]

尚未签到

发表于 2016-10-29 10:49:56 | 显示全部楼层 |阅读模式
  1. ResultSet中对于getDouble,getFloat,getInt方法由于返回的是基本类型数据,所以null变为了0(如果值为 SQL NULL ,则返回值为 0 )。这给我们带来了不少麻烦。为了避免这个问题需要借助ResultSet#wasNull()方法
2. ResultSet#getDate。这个家伙返回的类型是java.sql.Date,数据库字段类型为datetime时返回来的数据只有年月日,用ResultSet#getTimestamp才能返回完整的日期的和时间
3.注意数据库中的float类型,如果向数据库中插入记录时对于float类型字段需要使用double类型的参数,如果使用float类型的参数会导致精度问题。
SQL Server 类型 JDBC 类型 (java.sql.类型) Java 语言类型   bigint
  BIGINT
  long
  timestamp
  binary
  BINARY
  byte[]
  bit
  BIT
  Boolean
  charnchar
  CHAR
  String
  decimal
  money
  smallmoney
  DECIMAL
  java.math.BigDecimal
  float
  DOUBLE
  double
  int
  INTEGER
  int
  image
  LONGVARBINARY
  byte[]
  text
  ntext
  LONGVARCHAR
  String
  numeric
  NUMERIC
  java.math.BigDecimal
  real
  REAL
  float
  smallint
  tinyint
  SMALLINT
  short
  datetime
  smalldatetime
  TIMESTAMP
  java.sql.Timestamp
  varbinary
  VARBINARY
  byte[]
  varchar
  nvarchar
  uniqueidentifier
  VARCHAR
  String
注意: JDBC 驱动程序目前不支持 SQL Server sqlvariant 数据类型。如果使用查询从包含 sqlvariant 数据类型列的表中检索数据,则会发生异常。
 
了解数据类型的差异<!---->
<!--Content type: DocStudio. Transform: devdiv2mtps.xslt.-->  
  
  Java 编程语言数据类型和 SQL Server 2005 数据类型之间存在很多差异。Microsoft SQL Server 2005 JDBC Driver 通过各种类型的转换来帮助消除这些差异。
字符类型
  JDBC 字符串数据类型为 CHARVARCHARLONGVARCHAR
<!---->
类型 说明   Fixed-length
  SQL Server charnchar 数据类型直接映射到 JDBC CHAR 类型。这些都是在列具有 SET ANSI_PADDING ON 的情况下,具有由服务器提供的填充的固定长度的类型。对于 nchar,填充始终是打开的,但对于 char,在未填充服务器字符列的情况下,JDBC 驱动程序将添加填充。
  Variable-length
  SQL Server varcharnvarchar 类型直接映射到 JDBC VARCHAR 类型。
  Long
  SQL Server textntext 类型映射到 JDBC LONGVARCHAR 类型。对于 SQL Server 2005 来说,这些类型已过时,因此应改用大值类型。
  针对 textntext 服务器列使用 update<Numeric Type>updateObject (int, java.lang.Object) 方法时将失败。然而,对于 textntext 服务器列,支持将 setObject 方法用于指定的字符转换类型。


二进制字符串类型
  JDBC 二进制字符串类型为 BINARYVARBINARYLONGVARBINARY
<!---->
类型 说明   固定长度
  SQL Server binary 类型直接映射到 JDBC BINARY 类型。这是在列具有 SET ANSI_PADDING ON 的情况下,具有由服务器提供填充的固定长度类型。没有填充服务器 char 列时,JDBC 驱动程序会添加填充。
  SQL Server timestamp 类型是具有 8 个字节的固定长度的 JDBC BINARY 类型。
  可变长度
  SQL Server varbinary 类型映射到 JDBC VARBINARY 类型。
  Long
  SQL Server image 类型映射到 JDBC LONGVARBINARY 类型。对于 SQL Server 2005 来说,该类型已过时,因此应改用大值类型。
  SQL Server 2005 中的 udt 类型作为 LONGBINARY 类型映射到 JDBC。


精确数字类型
  JDBC 精确数字类型直接映射到其对应的 SQL Server 类型。
<!---->
类型 说明   BIT
  JDBC BIT 类型表示可能是 0 或 1 的单个位。此类型映射到 SQL Server bit 类型。
  TINYINT
  JDBC TINYINT 类型表示单个字节。此类型映射到 SQL Server tinyint 类型。
  SMALLINT
  JDBC SMALLINT 类型表示有符号的 16 位整数。此类型映射到 SQL Server smallint 类型。
  INTEGER
  JDBC INTEGER 类型表示有符号的 32 位整数。此类型映射到 SQL Server int 类型。
  BIGINT
  JDBC BIGINT 类型表示有符号的 64 位整数。此类型映射到 SQL Server bigint 类型。
  NUMERIC
  JDBC NUMERIC 类型表示固定精度的十进制值,它可存放相同精度的值。NUMERIC 类型映射到 SQL Server numeric 类型。
  DECIMAL
  JDBC DECIMAL 类型表示固定精度的十进制值,它可存放至少具有指定精度的值。DECIMAL 类型映射到 SQL Server decimal 类型。
  JDBC DECIMAL 类型还映射到 SQL Server moneysmallmoney 类型,这些类型是特定的固定精度的十进制类型,分别以 8 个字节和 4 个字节进行存储。


近似数字类型
  JDBC 近似数值数据类型为 REALDOUBLEFLOAT
<!---->
类型 说明   REAL
  JDBC REAL 类型具有 7 位精度(单精度)并直接映射到 SQL Server real 类型。
  DOUBLE
  JDBC DOUBLE 类型具有 15 位精度(双精度)并直接映射到 SQL Server float 类型。JDBC FLOAT 类型是 DOUBLE 的同义词。由于 FLOATDOUBLE 之间可能存在冲突,因此 DOUBLE 为首选类型。


日期时间类型
  JDBC TIMESTAMP 类型映射到 SQL Server datetimesmalldatetime 类型。datetime 类型以两个 4 字节整数进行存储。smalldatetime 类型可存放相同的信息(日期和时间),但精度较低,为两个 2 字节的小整数。
DSC0000.gif 注意:  SQL Server timestamp 类型是固定长度的二进制字符串类型。它不映射到任何 JDBC 时间类型:DATETIMETIMESTAMP


自定义类型映射
  JDBC 驱动程序中未实现将 SQLData 接口用于 JDBC 高级类型(UDT、Struct 等)的 JDBC 自定义类型映射功能。

另请参见
其他资源
了解 JDBC 驱动程序数据类型

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-292829-1-1.html 上篇帖子: SQL Server 2000 身份验证 下篇帖子: SQL Server学习(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表