使用JDBC连接数据库 (7)

for (int i = 0; i < count; i++) {

Object value = rs.getObject(i + 1);// 获取对应列所对应的字段值

// System.out.println("对应列所对应的字段值"+value);

String colname = metaData.getColumnName(i + 1).toLowerCase();// 获取对应列名;

// System.out.println("列名:"+colname);

// oracle 不管你建表时字段是大写还是小写,它一律帮你转换成大写

// 建议所有java类的属性都小写

 

// ①没有对应字段;②属性为私有时获取Field用的方法不是getDeclaredField。否则会报错

Field field = clz.getDeclaredField(colname);// 通过列名获取到字段对象,就是我们所说的属性;

field.setAccessible(true);

 

// 此处调用了Field类的set方法,就是给封装类对象所对应的字段赋值操作,

// 这样数据表对应的封装类的对象类就有值了,相当于查询到了理想的结果。

 

// 判断字段的数据类型

// Oracle 中 number类型 通过ResultSet 的 getObject() 返回的是 BigDecimal 类型

if (value instanceof BigDecimal) {

// System.out.println("bigdecimal");

int num = ((BigDecimal) value).intValue();

field.set(obj, num);

} else {

field.set(obj, value);// 将指定对象变量上此 Field 对象表示的字段设置为指定的新值

}

 

}

 

// 因为考虑到查询的结果不止一条,用集合进行操作

 

// 然后返回该结果集对象

list.add(obj);

}

 

}

 

} catch (Exception ex) {

ex.printStackTrace();

} finally {

// 关闭资源

closeAll(conn, pstmt, rs);

}

 

return list;

}

 

/**

 * 查询的通用方法 将表中的一行数据保存到一个map对象中,key为列(字段)的下标,value为该列(字段)的值 返回保存map的泛型集合

 *

 * @param sql    要做执行的 sql语句

 * @param params SQL语句需要的参数

 * @return

 */

public static List<Map> QueryByResultSet(String sql, Object[] params) {

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

try {

// 1.获取conn

conn = getConn();

// 2.获取Statement

pstmt = conn.prepareStatement(sql);

if (params != null) {

setParams(pstmt, params);

}

// 4.执行查询,得到ResultSet

rs = pstmt.executeQuery(sql);

// 5.处理ResultSet

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdxfz.html