一、概述
在最近开发的文件上转上转功能,使用到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) 将光标移动到此 |
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));//第一列 //商品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");
}
}