ResultSet结果集

一、概述

     在最近开发的文件上转上转功能,使用到JDBC进行操作数据库。在操作数据库中使用到ResultSet结果集类与ResultSetMetaData 类。Resultset主要用于接收JDBC查询语句返回的数据集对象,而ResultSetMetaData 可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。

二、使用

ResultSet 的使用

ResultSet 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。

 String getcommoditydatetwo = SqlManager.getSqlStmtDirect("TF_F_USER_COMMODITY_STATE","GETDATACTRM_TF_F_USER_COMMODITY_STATE");
                logger.info("商品续订文件接口打印sql"+ getcommoditydatetwo);
                pstmt=dbBean.getPreparedStatement(getcommoditydatetwo);
                pstmt.setString(1, SERVICENO);
                pstmt.setString(2, ELEMENT_ID);
                logger.info("商品续订文件接口订单号查询入参"+ ELEMENT_ID+" test  "+SERVICENO);
                ResultSet rs=pstmt.executeQuery();

ResultSet对象保持一个光标指向其当前的数据行。 最初,光标位于第一行之前。 next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false ,因此可以在while循环中使用循环来遍历结果集。

通过索引来获取数据

         //rs.next默认从查询结果的第一行开始,依次遍历,无下一 列时返回false
                while (rs.next())
                {
                    Integer ID=rs.getInt(1);//第一列
                    String Name=rs.getString(2);//第二列
                }

通过列的名称获取数据

     //rs.next默认从查询结果的第一行开始,依次遍历,无下一 列时返回false
                while (rs.next())
                {
                    Integer ID=rs.getInt("ID");//第一列
                    String Name=rs.getString("Name");//第二列
                }

ResultSet对象常用的一些方法​​​​

boolean absolute(int row)

将光标移动到此 ResultSet对象中的给定行号。

void afterLast()

将光标移动到这个 ResultSet对象的末尾,就在最后一行之后。

void beforeFirst()

将光标移动到这个 ResultSet对象的正面,就在第一行之前。

void cancelRowUpdates()

取消对此 ResultSet对象中当前行的更新。

void clearWarnings()

清除此 ResultSet对象上报告的所有警告。

void close()

ResultSet释放此 ResultSet对象的数据库和JDBC资源,而不是等待其自动关闭时发生。

void deleteRow()

从此 ResultSet对象和底层数据库中删除当前行。

int findColumn(String columnLabel)

将给定的 ResultSet列标签映射到其 ResultSet列索引。

boolean first()

将光标移动到此 ResultSet对象中的第一行。

Array getArray(int columnIndex)

将该 ResultSet对象的当前行中指定列的值作为Java编程语言中的 Array对象检索。

Array getArray(String columnLabel)

将此 ResultSet对象的当前行中指定列的值作为Java编程语言中的 Array对象检索

 ResultSetMetaData的使用

获取对象

 ResultSetMetaData md = rs.getMetaData();

常用方法

getColumnCount():返回当前 ResultSet 对象中的列数。

getColumnName(index):返回第列的名称
.....

三、实例

 if (SERVICENO != null && !SERVICENO.equals("")&&ELEMENT_ID != null && !ELEMENT_ID.equals("")) {
                dbBean.setAutoCommit(true);
                String getcommoditydatetwo = SqlManager.getSqlStmtDirect("TF_F_USER_COMMODITY_STATE","GETDATACTRM_TF_F_USER_COMMODITY_STATE");
                logger.info("商品续订文件接口打印sql"+ getcommoditydatetwo);
                pstmt=dbBean.getPreparedStatement(getcommoditydatetwo);
                pstmt.setString(1, SERVICENO);
                pstmt.setString(2, ELEMENT_ID);
                logger.info("商品续订文件接口订单号查询入参"+ ELEMENT_ID+" test  "+SERVICENO);
                ResultSet rs=pstmt.executeQuery();
                ResultSetMetaData md = rs.getMetaData();
                //第一行,因为取第一行,rs.next()只能在代码中出现一次
                if(rs.next())
                {
                    while (true)
                    {
                        rowData = new HashMap();
                        rowData.put(md.getColumnName(1),rs.getObject(1));//第一列   //商品ID
                        rowData.put(md.getColumnName(2),rs.getObject(2));//第2列   //订单号
                        rowData.put(md.getColumnName(3),rs.getObject(3));//第3列  //省份id
                        rowData.put("DATAMSG","havadata");
                        break;//跳出死循环
                    }
                }else
                {
                    rowData = new HashMap();
                    rowData.put("DATAMSG","nothava");
                }
            }

 

你可能感兴趣的:(JAVA开发)