现在的位置: 首页 > 综合 > 正文

JDBC ResultSet

2013年09月01日 ⁄ 综合 ⁄ 共 3526字 ⁄ 字号 评论关闭

ResultSet的类型如下
1. 在滚动方面
    1.1 只能向前滚动
        创建方式
            用API
                     connection.createStatement()
                     connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, xx) 

                     connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, xx, xx)
                     创建Statement,然后用他们执行查询返回ResultSet。
                 相关API
                     next()
    1.2  可滚动的ResultSet
                  创建方式
                     用API
                     conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE/Result.TYPE_SCROLL_SENSITIVE, xx)
                     conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE/Result.TYPE_SCROLL_SENSITIVE, xx, xx)
                     创建Statement,然后用他们执行查询返回ResultSet。
                  相关API
                    next()
                    previous()
                    first()              //回到第一行
                    absolute(int n)
                    relative(int n)   //移动到相对当前行的第几行
2. 在可修改方面
        2.1 只读ResultSet
                创建方式
          用API
          connection.createStatement()
                       connection.createStatement(xx,  ResultSet.CONCUR_READ_ONLY)
                       connection.createStatement(xx,  ResultSet.CONCUR_READ_ONLY, xx)
                       创建Statement,然后用他们执行查询返回ResultSet。
        2.2 可更新ResultSet
                创建方式
          用API
                       connection.createStatement(xx, ResultSet.CONCUR_UPDATABLE)
                       connection.createStatement(xx, ResultSet.CONCUR_UPDATABLE, xx)
                       创建Statement,然后用他们执行查询返回ResultSet。
                相关API
                    updateXXX(int,XXX) //更新当前行的列值
                    updateRow()            /* Updates the underlying database with the new contents of the
                                                        * current row of this <code>ResultSet</code> object.
                                                        * This method cannot be called when the cursor is on the insert row.
                                                        */
                    moveToInsertRow()   //移动游标到插入行
                    moveToCurrentRow() //移动游标到记忆中的某个行
                    insertRow()              /* Inserts the contents of the insert row into this
                                                        * ResultSet object and into the database.

                                                        * The cursor must be on the insert row when this method is called.
                                                        */

                    要完成对数据库的插入,只能如下操作:
                    首先调用moveToInsertRow()移动到插入行,然后调用updateXXX的方法完成对各列数据的更新。
                    完成更新后,游标离开插入列之前,调用insertRow()写到数据库
           
                注意:
          ResultSet只是相当于数据库中表的视图,所以并不是ResultSet只要设置了可更新就能够完成对DB更新的,能够完成更新的ResultSet的SQL语句必须要具备如下的属性:
                    a、只引用了单个表。
                    b、不含有join或者group by子句。
                    c、那些列中要包含主关键字。

3. 在可保持方面
        3.1 不可保持ResultSet
                    创建方式:
                        用API
                        connection.createStatement()
                        connection.createStatement(xx, xx)
                        connection.createStatement(xx, xx, ResultSet.CLOSE_CURSORS_AT_COMMIT)
                       创建Statement,然后用他们执行查询返回ResultSet。
                  
                    注意: 当Statement 对象关闭、重新执行查询、调用Connection的commit()、从多结果集的序列中获取下一个结果集时,当前ResultSet 对象将自动关闭。
                                 对于这样的Statement,他所有的查询对应一个结果集。

        3.2 可保持ResultSet
                    创建方式:
                        用API
                        connection.createStatement(xx,  xx, ResultSet.HOLD_CURSORS_OVER_COMMIT) //调用connection的commit()方法后,当前结果集不关闭
                       创建Statement,然后用他们执行查询返回ResultSet。

抱歉!评论已关闭.