首页 理论教育 使用JDBC查询数据,轻松访问数据库

使用JDBC查询数据,轻松访问数据库

时间:2023-11-01 理论教育 版权反馈
【摘要】:通过JDBC查询数据库记录。图11-31通过JDBC查询数据库数据程序第13行利用同一包下MyJDBCConnection工具类的getConnection静态方法获取到数据库的一个Connection连接。通过执行数据库查询语句,返回的结果保存在ResultSet结果集中。在chapter11项目src文件夹cn.linaw.chapter11.demo01包下新建Query DBSave Test测试类,查询testbank数据库的bankaccount表中的数据,将结果转存到List集合中。程序第16行通过ResultSet MetaData对象的getColumnCount方法得到ResultSet结果集的行数。

使用JDBC查询数据,轻松访问数据库

【例11-4】

通过JDBC查询数据库记录。

在chapter11项目src文件夹cn.linaw.chapter11.demo01包下新建Query DBTest测试类,查询testbank数据库的bankaccount表中的数据。源代码如图11-31所示。

图11-31 通过JDBC查询数据库数据

(1)程序第13行利用同一包下MyJDBCConnection工具类的getConnection静态方法获取到数据库的一个Connection连接。

(2)程序第14行编写QUERY语句,可以根据需要增加WHERE条件子句,使用“?”占位符。

(3)程序第15行根据传递的SQL语句创建PrepareStatement对象。

(4)程序第16行通过PreparedStatement对象执行SQL语句。执行QUERY查询语句返回一个Result结果集对象,该对象保存了SQL语句查询的结果。

(5)程序第17~22行遍历Result结果集对象,对于每一行记录,通过get Xxx方法根据列名获取对应的值。

(6)程序第29~51行在finally语句块中统一关闭数据库连接,释放资源。

通过执行数据库查询语句,返回的结果保存在ResultSet结果集中。当产生它的Statement关闭、重新执行或用于从多结果序列中获取下一个结果时,该ResultSet将被Statement自动关闭。因此,如果后续程序还需要该查询结果,可以将ResultSet结果集保存在集合中。

【例11-5】

将向数据库查询的ResultSet结果集内容保存到List集合中。

在chapter11项目src文件夹cn.linaw.chapter11.demo01包下新建Query DBSave Test测试类,查询testbank数据库的bankaccount表中的数据,将结果转存到List集合中。源代码如图11-32所示。

图11-32 将ResultSet结果集保存到List<Bank Account>容器

(1)程序第14行声明一个带泛型的List变量,指向无参构造的Array List空集合,里面元素都是Bank Account类型。

(2)程序第20~26行,遍历ResultSet结果集,将每一行各字段的值封装在一个Bank Account对象中,然后添加到List链表中。

(3)程序第33~55行及时关闭数据库连接。

(4)程序第56~59行在数据库连接关闭后,对List链表遍历,打印集合中的每一个元素,起到了转存的作用。(www.xing528.com)

为了方便将ResultSet结果集内容转存到List集合中,如图11-33所示,使用了一个My ResultSetConvert工具类,提供两种转存的方法。

图11-33 MyResultSetConvert小工具

第一种方法:To Map List将ResultSet结果集转换为List<Map<String,Object>>,List中的每一个Map集合对应ResultSet结果集中的一行记录。

第二种方法:ToBean List将ResultSet结果集转换为List<T>,List中的每一个泛型T对象对应一个JavaBean,简单说,JavaBean是提供了setter、getter和无参构造方法的Java类,其他类可以通过反射机制发现和操作这些JavaBean的属性。该方法涉及反射,等学完项目12后再回头理解。

(1)程序第12~25行将给定的ResultSet对象转换成一个List列表,List中每个元素代表一行数据(一个Map集合),Map集合的每个元素表示该行数据中列名和值的键值对。

(2)程序第14行创建一个Array List集合,集合中每个元素就是一个Map集合。

(3)程序第15行根据ResultSet结果集的get MetaData方法返回关于ResultSet结果集中列的类型和属性信息的ResultSet MetaData对象。

(4)程序第16行通过ResultSet MetaData对象的getColumnCount方法得到ResultSet结果集的行数。

(5)程序第17~23行遍历ResultSet结果集每一行,将每一行数据保存在一个Map集合中。

(6)程序第12~25行将给定的ResultSet对象转换成一个List<T>列表,List中一个元素保存ResultSet中的一行记录,该记录是一个T类型的JavaBean对象。

【例11-6】

利用My ResultSetConvert小工具完成ResultSet结果集的转存。

第一次采用My ResultSetConvert的To Map List方法。在chapter11项目src文件夹cn.linaw.chapter11.demo01包下新建Query DBto Map List Test测试类,如图11-34所示。

图11-34 将ResultSet结果集转换为List<Map<String,Object>>

第二次采用My ResultSetConvert的ToBean List方法。在chapter11项目src文件夹cn.linaw.chapter11.demo01包下新建Query DBtoBean List Test测试类,如图11-35所示。

图11-35 将ResultSet结果集转换为List<T>

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈