Java创建一个JDBC工具类并解决返回ResultSet的问题(java jdbc resultset)

  本篇文章为你整理了Java创建一个JDBC工具类并解决返回ResultSet的问题(java jdbc resultset)的详细内容,包含有java createstatement java jdbc resultset java create java创建jdbc连接 Java创建一个JDBC工具类并解决返回ResultSet的问题,希望能帮助你了解 Java创建一个JDBC工具类并解决返回ResultSet的问题。

  前段时间做数据源开发时用到了JDBC,碰到了一个问题,记录一下。

  创建了一个JDBC工具类用来创建连接,并传入SQL查询,向调用者返回ResultSet对象,随后在工具类中关闭连接。

  但是调用之后发现ResultSet始终拿不到数据,最后发现 ResultSet随着工具类中在finally中关闭连接而清空。

  百度后发现可以将ResultSet指向CacheRowSetImpl类然后返回的方法,但是部署服务器编译的时候提示 “com.sun.rowset.CachedRowSetImpl 是 Sun 的专用API,在后续的JDK9版本后(包括JDK9)已经删除”。

  原因是CacheRowSetImpl是过时的类,即将在JDK 9的版本中移除,所以不建议使用。

  最后,如下所示,既可以给上层返回ResultSet,在上层解析完结果集后还可以关闭连接:

  

package com.JyoKou.utils;

 

  
public JDBCUtils(String driver, String url, String userName, String password, String sql) {

   try {

   Class.forName(driver);

   this.conn = DriverManager.getConnection(url, userName, password);

   this.ps = conn.prepareStatement(sql);

   } catch (Exception e) {

   e.printStackTrace();

   throw new BadRequestException(MsgConstants.MSG);

   * 创建JDBC连接并执行查询语句

   * @return ResultSet结果集

   * @author JyoKou

   * @since 2022年7月7日

   public ResultSet getQuery() {

   ResultSet rs;

   try {

   rs = this.ps.executeQuery();

   } catch (SQLException e) {

   e.printStackTrace();

   throw new BadRequestException(MsgConstants.MSG);

   return rs;

   * 关闭连接

   * @author JyoKou

   * @since 2022年7月15日

   public void close() {

   try {

   if (this.ps != null) {

   this.ps.close();

   if (this.conn != null) {

   this.conn.close();

   } catch (Exception e) {

   e.printStackTrace();

   throw new BadRequestException(MsgConstants.MSG);

  }

 

  调用的时候可以这样写:

  

public Object getDataFromDs(String connectDrivers, BaSysHomepageDatasourceEntity baSysHomepageDatasourceEntity) {

 

   //JDBC执行查询

   JDBCUtils jdbcUtils = new JDBCUtils(connectDrivers

   , baSysHomepageDatasourceEntity.getDataUrl()

   , baSysHomepageDatasourceEntity.getDataUserName()

   , baSysHomepageDatasourceEntity.getDataUserPwd()

   , homepageCardQueryData.getQuerySql());

   ResultSet resultSet = jdbcUtils.getQuery();

   try {

   if (resultSet.next()) {

   return resultSet.getInt("F_NUM");

   } else {

   throw new BadRequestException(MsgConstants.MSG);

   } catch (SQLException e) {

   e.printStackTrace();

   throw new BadRequestException(MsgConstants.MSG);

   } finally {

   jdbcUtils.close();

   }

 

  总结:JDBC工具类使用构造函数对成员变量conn进行构造,然后调用查询方法拿到结果集进行解析,解析完毕后再使用JDBCUtils.close()关闭成员变量conn连接。

  以上就是Java创建一个JDBC工具类并解决返回ResultSet的问题(java jdbc resultset)的详细内容,想要了解更多 Java创建一个JDBC工具类并解决返回ResultSet的问题的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: