创建JDBCUtils工具类

JDBCUtils工具类

  1. 私有化构造函数,外界无法直接创建对象
  2. 提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接
  3. 提供公共的,静态的,close方法,用来释放资源
package cn.tedu.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ResourceBundle;

/**

 * 这个类用来提供jdcb的工具类

1.1   私有化构造函数,外界无法直接创建对象

1.2   提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接

1.3   提供公共的,静态的,close方法,用来释放资源

1.4   测试类

 */

public class JDBCUtils {
//1,私有化构造函数,外界无法直接创建对象
   private JDBCUtils(){}

   //只加载一次属性文件
   static ResourceBundle rb = null;
   static{
      //a,,,,读取属性文件
      rb = ResourceBundle.getBundle("jdbc");
   }

   //2,提供公共的,静态的,getConnection 方法,
   //用来给外界提供数据库连接
   public static Connection getConnection(){
      try {
         //1,注册驱动
         //b,,获取属性文件里的内容
         Class.forName(rb.getString("driverClass"));

         //2,获取数据库连接
         String url=rb.getString("jdbcUrl");
         String user=rb.getString("user");
         String password=rb.getString("password");

         Connection conn = DriverManager.getConnection(url, user, password);
         return conn;

      } catch (Exception e) {
         e.printStackTrace();
      }
      return null;
   }

   //3,提供公共的,静态的,close方法,
   //用来释放资源
   public static void close(ResultSet rs, Statement st,Connection conn){
      //释放结果集资源
      //非空判断,防止空指针异常
      if(rs!=null){
         try {
            rs.close();
         } catch (SQLException e) {
            e.printStackTrace();
         }finally{
            rs=null;//手动置空
         }
      }
      //释放传输器资源
      //非空判断,防止空指针异常
      if(st!=null){
         try {
            st.close();
         } catch (SQLException e) {
            e.printStackTrace();
         }finally{
            st=null;//手动置空
         }
      }

      //释放数据库连接资源
      //非空判断,防止空指针异常
      if(conn!=null){
         try {
            conn.close();
         } catch (SQLException e) {
            e.printStackTrace();
         }finally{
            conn=null;//手动置空
         }
      }
   }

测试类

package cn.tedu.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.mysql.jdbc.Driver;
import cn.tedu.util.JDBCUtils;

/**
 * 这个类用来测试工具类
 */

public class TestUtils {
   //单元测试方法:@Test  +  void
      @Test
      public void hello(){
         Connection conn = null;//声明连接对象
         Statement st = null;//声明传输器对象
         ResultSet rs = null;//声明结果集对象
         try {
            //1,注册驱动    2,获取数据库连接
            conn = JDBCUtils.getConnection();
            //3,获取传输器java.sql.Statement
            st = conn.createStatement();
      //    4,执行SQL。java.sql.ResultSet
            String sql ="select * from user";
            rs = st.executeQuery(sql);
      //    5,遍历结果集
            while(rs.next()){
                //根据列的索引获取第一列的数据
      //       String id = rs.getString(1);
                //根据列的名字获取第一列的数据
                String id = rs.getString("id");
      //       int id1  = rs.getInt(1);
                //根据列的索引获取第二列的数据
                String username = rs.getString(2);
                //根据列的索引获取第三列的数据
                String password = rs.getString(3);
                System.out.println(id+username+password);
            }
         } catch (SQLException e) {
            e.printStackTrace();
         }finally{//保证资源一定会被释放
      //    6,释放资源
            JDBCUtils.close(rs, st, conn);
         }
      }
}

准备数据

创建JDBCUtils工具类

配置文件的开发形式

//2,提供公共的,静态的,getConnection 方法,

   //用来给外界提供数据库连接

   public static Connection getConnection(){

      try {

         //a,,,,读取属性文件

         ResourceBundle rb =

                ResourceBundle.getBundle("jdbc");

         //1,注册驱动

//b,,获取属性文件里的内容

         Class.forName(rb.getString("driverClass"));

         //2,获取数据库连接

         String url=rb.getString("jdbcUrl");

         String user=rb.getString("user");

         String password=rb.getString("password");

         Connection conn =

                DriverManager.getConnection(

                      url, user, password);

         return conn;

      } catch (Exception e) {

         e.printStackTrace();

      }

      return null;

   }
上一篇:Application received signal SIGABRT


下一篇:hibernate多对多单向关联