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

[经验分享] java.sql.ResultSet个人总结(sql server)

[复制链接]

尚未签到

发表于 2016-10-30 03:15:57 | 显示全部楼层 |阅读模式
  ResultSet 接口提供用于从当前行获取列值的获取 方法(getBoolean、getLong 等)。可以使用列的索引编号或列的名称获取值。一般情况下,使用列索引较为高效。列从 1 开始编号。为了获得最大的可移植性,应该按从左到右的顺序读取每行中的结果集列,每列只能读取一次。
对于获取方法,JDBC 驱动程序尝试将底层数据转换为在获取方法中指定的 Java 类型,并返回适当的 Java 值。JDBC 规范有一个表,显示允许的从 SQL 类型到 ResultSet 获取方法所使用的 Java 类型的映射关系。
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 数据类型列的表中检索数据,则会发生异常。
Getter 方法转换
  基于 SQL Server 2005 的数据类型,以下图表包含 SQLServerResultSet类的 get<Type>方法的 JDBC 驱动程序转换图,以及 SQLServerCallableStatement类的 get<Type>方法支持的转换。
DSC0000.gif
  JDBC 驱动程序的 getter 方法支持三种基本的转换类别:

  • Non-Lossy (x):在 getter 类型等于或小于基础服务器类型的情况下执行转换。例如,对基础服务器的十进制数列调用 getBigDecimal时,无需进行转换。
  • Converted (y):从数字服务器类型到 Java 语言类型的转换,此时的转换为常规转换,并遵循 Java 语言转换规则。对于这些转换,总是直接截取有效位数(从不四舍五入),而溢出则按目标类型取模处理,以较小者为准。例如,对包含“1.9999”的基础十进制数列调用 getInt将返回“1”;如果基础十进制数值为“3000000000”,则 int 值将溢出为“-1294967296”。
  • Data Dependent (z):从基础字符类型转换到数字类型时,要求字符类型所包含的值可转换成数字类型。不执行其他转换。如果值对于 getter 类型过大,则该值无效。例如,如果对包含“53”的 varchar(50) 列调用 getInt,则该值作为 int 返回;但如果基础值为“xyz”或“3000000000”,则发生错误。


(摘自微软的sqljdbc帮助文档)
1. ResultSet中对于getDouble,getFloat,getInt方法由于返回的是基本类型数据,所以null变为了0(如果值为 SQL NULL,则返回值为 0)。这给我们带来了不少麻烦。为了避免这个问题需要借助ResultSet#wasNull()方法
2. ResultSet#getDate。以前没注意过这个家伙返回的类型是java.sql.Date,发现数据库字段类型为datetime时返回来的数据只有年月日,用ResultSet#getTimestamp就没问题,郁闷,到现在还不知道为什么。
3. 相关资源:
http://java.sun.com/products/jdbc/overview.html

http://msdn.microsoft.com/zh-cn/data/aa937724(en-us).aspx

  

运维网声明 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-292974-1-1.html 上篇帖子: sql server 自定义函数 下篇帖子: SQL Server的Bulk Insert
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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