java中result和resultSet

java中result和resultSet

2023年7月29日发(作者:)

java中result和resultSet

ResultSet: 1,定义 public interface ResultSet     表⽰数据库结果集的数据表,通常通过执⾏查询数据库的语句⽣成。 2,获得 Statement stmt = Statement( _SCROLL_INSENSITIVE, _UPDATABLE); ResultSet rs = eQuery("SELECT a, b FROM TABLE2"); 3,迭代     ResultSet 对象具有指向其当前数据⾏的指针。最初,指针被置于第⼀⾏之前。next ⽅法将指针移动到下⼀⾏;因为该⽅法在

ResultSet 对象中没有下⼀⾏时返回

                false,所以可以在

while 循环中使⽤它来迭代结果集。      while(())      {

       }   4,取值    ResultSet 接⼝提供⽤于从当前⾏检索列值的获取⽅法(getBoolean、getLong 等)。可以使⽤列的索引编号或列的名称检索值。⼀般情况下,使⽤列索引较为⾼效。  列从 1 开始编号。为了获得最⼤的可移植性,应该按从左到右的顺序读取每⾏中的结果集列,⽽且每列只能读取⼀次。    ing();    以上部分摘⾃JDK1.5的中⽂版⽂档,如果由于版本问题导致了⼀些问题,请见谅。在此并没有详尽的列出所有关于ResultSet的信息,⼤家可⾃⾏翻阅⽂档。但是我们在程序中基本上就只使⽤以上列出的部分了,我猜在⼤部分情况下,我们在WEB应⽤中,很少使⽤ResultSet进⾏数据更新吧?所以我并没有列出关于数据更新的相关内容,感兴趣的可⾃⾏查看。    下⾯想象⼀个问题:我从数据库查询某⼀表的所有数据,估计100⾏吧,但是肯定不知道具体多少⾏,我们使⽤ResultSet来存储。那么我想取出最后⼀⾏的第⼀列的某⼀个字段值,怎么办呢?除了迭代还有什么好办法吗?我甚⾄有可能在⼀个⽅法内部多次使⽤到这样的需求:我就想随意的取出任意⾏的任意列。怎么办呢,反复迭代吗?有没有考虑过数据库连接的问题?  就我⽬前的知识层次来说,我对以上问题在现有的ResultSet上,⽆能为⼒,不知道怎么办?我翻遍了我的JDK1.5的中⽂版⽂档也没能找到好的答案,我顿时觉得⽂档落伍了。JAVA的使⽤率较.Net更⼤,难道就找不到类似Datatable的数据集吗?我猜是有的,只是我使⽤的⽂档貌似是针对JAVA SE版本,可能没有涉及到更深⼊的企业级应⽤。  在讲解Result之前,先说说⽬前⼤家都怎么来存储数据集吧。毫⽆疑问,在SSH框架中,⼤家都使⽤实体List,这样就很⽅便迭代,也很⽅便定位,⽽且在展现的时候借助Struts标签,很给⼒ 。但是,我基本上是拒绝使⽤的,第⼀,⽬前SSH配合List使⽤的 查询语⾔HQL⼀点也不好⽤,也不快速(个⼈感觉)。第⼆,冗余字段,我只想查询⼀个表的两个字段,没必要查询出整个表的⼏⼗个字段吧!第三,表连接的问题,难道有什么完美的解决⽅案吗?难道有⽐join更好的吗?甚⾄有些⼈在没有使⽤ORM框架的情况下,先⾃⾏查询出ResultSet,⽽后再另⾏迭代封装到实体List中,这样做真的值得吗?  Result:    1, 定义    表⽰数据库结果集的数据表。完整名称    2, 获得    为了得到Result,我们⾸先必须先要得到Result,然后使⽤lt(rs)转化即可。

Statement stmt = Statement( _SCROLL_INSENSITIVE, _UPDATABLE); ResultSet rs = eQuery("SELECT a, b FROM TABLE2");

      Result rst = lt(rs);    3, 迭代    很不幸鄙⼈住处不能上⽹,⽆法下载阅读源代码,资料也⽐较匮乏,度娘和⾕哥还有搜妹在这个问题也都没能给⼒,最后就只能⼀点点的尝试了。功夫不负有⼼⼈,终于被我发现以下⽤法: for (SortedMap item : s()) {

    }    这种迭代⽅式并没有⽐ResultSet的更复杂,⽽且如果你愿意的话,你可以稍作修改使迭代可以从任意⾏开始,也可以从任意端开始。    4, 取值     由于Result中的每⼀⾏都是SortedMap,所以遵循规则:     Object value=(key);( SortedMap的另外⼀些⽅法当然也适⽤)

     介绍完两个数据集,相信⼤家都有所了解了。其实他们的作⽤相同,⽤法也类似,⼤部分情况下,两者通⽤⼏乎没有什么问题。     现在我尝试着使⽤Result解决⼀下刚刚标红还不能解决的问题。     1, 取得最后⼀⾏第⼀列     Object o= sByIndex()[Count()][0];      这难道不够简单吗?     2, 取得任意⾏任意列     Object o= sByIndex()[⾏索引][列索引];    请注意:⼀定要做好防范,避免抛出超出索引的异常。其他⽤法以后慢慢开发吧。另外还需要说明的是,⼀旦我们从ResultSet获得Result后,数据库连接即可释放,不会存在占⽤连接的情况。    有些⼈说我就⽤实体List,让ResultSet和Result都见⿁去吧。    我才不管呢!快速,直接,简单,抛弃冗余字段,我做的没错吧?    ⾄于⼤家怎么选择,随⼼吧。码农也是感性的。

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690580942a372810.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信