自定义JDBC工具类 连接MySQL数据库

需要用到的jar包:mysql-connector-java-5.1.43-bin.jar

1.把连接数据库需要的信息,都保存在一个文件中,这个文件是一个properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/javaee1707?useSSL=true
user=root
password=123456

  1. 代码实现
    public class JDBCUtil {
    private static String url = null;
    private static String user = null;
    private static String password = null;
    private static String driverClass = null;
    private static InputStream in = null;

    //利用静态代码块的特征,在类文件加载到内存的时候,就会执行在静态代码块里面的代码
    static {
    try {
    //1. 读取配置文件信息 读取properties文件
    Properties props = new Properties();

         //如果一个properties文件加载到内存中,需要借助于IO流
         in = new FileInputStream("./src/db.properties");
         
         //2. 利用Properties里面的load方法加载文件
         props.load(in);
         
         //3. 可以通过Properties类对象,获取到想要的数据
         url = props.getProperty("url");
         user = props.getProperty("user");
         password = props.getProperty("password");
         driverClass = props.getProperty("driver");
         
         //4. 加载类文件
         Class.forName(driverClass);
     } catch (IOException | ClassNotFoundException e) {
         // TODO: handle exception
         e.printStackTrace();
         System.out.println("驱动加载失败");
     } finally {
         //关闭文件连接
         if (in != null) {
             try {
                 in.close();
             } catch (IOException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
         }
     }
    

    }

    /**

    • 获取数据库连接对象

    • @return
      */
      public static Connection getConnection() {
      Connection conn = null;

      try {
      conn = DriverManager.getConnection(url, user, password);
      } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }

      return conn;
      }

    /**

    • 关闭数据库连接,释放Statement
    • @param conn 数据库连接对象
    • @param st Statement对象
      */
      public static void close(Connection conn, Statement st) {
      try {
      if (st != null) {
      st.close();
      }
      if (conn != null) {
      conn.close();
      }
      } catch (SQLException e) {
      // TODO: handle exception
      e.printStackTrace();
      //糖衣炮弹
      throw new RuntimeException(e);
      }
      }
      //关闭带有结果集的查询语句资源
      public static void close(Connection conn, Statement st, ResultSet set) {
      try {
      if (st != null) {
      st.close();
      }
      if (set != null) {
      set.close();
      }
      if (conn != null) {
      conn.close();
      }
      } catch (SQLException e) {
      // TODO: handle exception
      e.printStackTrace();
      //糖衣炮弹
      throw new RuntimeException(e);
      }
      }
      }

3.通过自定义JDBC工具类来连接数据库
public class Demo2 {

//创建表格
@Test
public void createTable() {
    Statement st = null;

    //1. 通过已经封装好的JDBC工具类,获取到数据库的连接对象
    Connection conn = JDBCUtil.getConnection();
    try {
        //2. 获取Statement,SQL语句运输者,将SQL语句运输到MySQL里面,让MySQL运行
        st = conn.createStatement();

        //3. 准备SQL语句
        String sql = "create table WOW(heroID int not null primary key auto_increment,heroName char(30))";

        //4. 通过Statement执行SQL语句
        int count = st.executeUpdate(sql);

        //5. 查看创建的结果
        System.out.println("影响的行数:" + count);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

    // 使用Statement执行DML语句
@Test
public void testInsert() {
    Statement st = null;

    //1. 建立数据库连接
    Connection conn = JDBCUtil.getConnection();

    try {
        //2. 获取到Statement
        st = conn.createStatement();

        //3. 准备SQL语句
        String sql = "insert into WOW(heroName) values('萨满')";

        //4. 通过Statement执行SQL语句
        int count = st.executeUpdate(sql);

        //5. 影响的行数
        System.out.println("count = " + count);

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        //conn是连接数据库的资源,st是应用程序到MySQL直接的SQL语句运输者
        //这两个都算是资源,所以都需要关闭
        try {
            if (st != null) {
                st.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}

    / /使用Statement查询数据库中数据
@Test
public void testSelect() {
    Connection conn = null;
    Statement st = null;
    ResultSet set = null; //查询语句返回的结果集对象
    
    try {
        //1. 获取数据库连接对象
        conn = JDBCUtil.getConnection();
        
        //2. 获取Statement 
        st = conn.createStatement();
        
        //3. 准备SQL语句
        String sql = "select * from WOW";
        
        //4. 执行SQL语句 【获取查询结果集】
        set = st.executeQuery(sql);
        
        //5. Result next() getXXX(String 字段名) XXX表示不同的数据类型,
        //根据当前的代码需求 使用不同的数据类型
        while (set.next()) {
            int heroID = set.getInt("heroID");
            String heroName = set.getString("heroName");
            
            System.out.println(heroID + ":" + heroName);
        }
    } catch (SQLException e) {
        // TODO: handle exception
        e.printStackTrace();
    } finally {
        JDBCUtil.close(conn, st, set);
    }
}

}

你可能感兴趣的:(自定义JDBC工具类 连接MySQL数据库)