JDBC笔记5--结果集
JDBC笔记5--结果集
1、ResultSet 得到数据
-
查询需要调用PreparedStatement 的 executeQuery() 方法,查询结果是一个ResultSet 对象
-
ResultSet 对象以逻辑表格的形式封装了执行数据库操作的结果集,ResultSet 接口由数据库厂商提供实现
-
ResultSet 返回的实际上就是一张数据表。有一个指针指向数据表的第一条记录的前面。
-
ResultSet 对象维护了一个指向当前数据行的游标,初始的时候,游标在第一行之前,可以通过 ResultSet 对象的 next() 方法移动到下一行。调用 next()方法检测下一行是否有效。若有效,该方法返回 true,且指针下移。相当于Iterator对象的 hasNext() 和 next() 方法的结合体。
-
当指针指向一行时, 可以通过调用 getXxx(int index) 或 getXxx(int columnName) 获取每一列的值。
-
例如: getInt(1), getString(“name”)
-
注意:Java与数据库交互涉及到的相关Java API中的索引都从1开始。
-
ResultSet 接口的常用方法:
-
boolean next()
-
getString()
-
…
2、ResultSetMetaData结果集元数据得到对应的属性
-
可用于获取关于 ResultSet 对象中列的类型和属性信息的对象
-
ResultSetMetaData meta = rs.getMetaData();
-
getColumnName(int column)
:获取指定列的名称 -
getColumnLabel(int column)
:获取指定列的别名**(常用)** -
getColumnCount()
:返回当前 ResultSet 对象中的列数**(常用)** -
getColumnTypeName(int column)
:检索指定列的数据库特定的类型名称。 -
getColumnDisplaySize(int column)
:指示指定列的最大标准宽度,以字符为单位。 -
isNullable(int column)
:指示指定列中的值是否可以为 null。 -
isAutoIncrement(int column)
:指示是否自动为指定列进行编号,这样这些列仍然是只读的。
3、问题
- 得到结果集后, 如何知道该结果集中有哪些列 ? 列名是什么?
- 需要使用一个描述 ResultSet 的对象, 即 ResultSetMetaData
-
获取 ResultSetMetaData: 调用 ResultSet 的
getMetaData()
方法即可 -
获取 ResultSet 中有多少列:调用 ResultSetMetaData 的
getColumnCount()
方法 -
获取 ResultSet 每一列的列的别名是什么:调用 ResultSetMetaData 的
getColumnLabel()
方法
4、释放资源
ResultSet, Statement,Connection这三个不使用的时候都需要被释放。