一、概述
在最近开发的文件上转上转功能,使用到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默认从查询结果的第一行开始,依次遍历,无下一 列时返回falsewhile (rs.next()){Integer ID=rs.getInt(1);//第一列String Name=rs.getString(2);//第二列}
通过列的名称获取数据
//rs.next默认从查询结果的第一行开始,依次遍历,无下一 列时返回falsewhile (rs.next()){Integer ID=rs.getInt("ID");//第一列String Name=rs.getString("Name");//第二列}
ResultSet对象常用的一些方法????
boolean |
absolute(int row)将光标移动到此 |
void |
afterLast()将光标移动到这个 |
void |
beforeFirst()将光标移动到这个 |
void |
cancelRowUpdates()取消对此 |
void |
clearWarnings()清除此 |
void |
close()
|
void |
deleteRow()从此 |
int |
findColumn(String columnLabel)将给定的 |
boolean |
first()将光标移动到此 |
Array |
getArray(int columnIndex)将该 |
Array |
getArray(String columnLabel)将此 |
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<Object,Object>();rowData.put(md.getColumnName(1),rs.getObject(1));//第一列 //商品IDrowData.put(md.getColumnName(2),rs.getObject(2));//第2列 //订单号rowData.put(md.getColumnName(3),rs.getObject(3));//第3列 //省份idrowData.put("DATAMSG","havadata");break;//跳出死循环}}else{rowData = new HashMap();rowData.put("DATAMSG","nothava");}}