2022.4.23 JDBC配置文件与工具类

配置文件与工具类

为避免重复书写代码,创建一个包,书写工具类

配置代码通常单独书写 避免强耦合

配置文件中内容

不要加分号和双引号
1 driver=com.mysql.jdbc.Driver
2 url = jdbc:mysql://localhost:3306/jdbcStudy?useUnicode=true&characterEncoding=utf8&useSSL=true
3 username = root
4 password = 123456

封装工具类

  • 在实际JDBC的使用中,存在着大量的重复代码:例如连接数据库、关闭数据库等这些操作!

  • 我们需要把传统的JDBC代码进行重构,抽取出通用的JDBC工具类!以后连接任何数据库、释放资源都可以使用这个工具类

使工具类读取配置文件:在自己创建的工具包中创建一个工具类

 1 package com.xing.lesson02.utils;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.sql.*;
 6 import java.util.Properties;
 7 
 8 public class JdbcUtils {
 9     private static String driver = null;
10     private static String url = null;
11     private static String username = null;
12     private static String password = null;
13 
14     static {
15         try {//  返回输入流                  类加载器          拿到资源                   需要加载的文件名
16             InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
17             Properties properties = new Properties();
18             properties.load(in);//抛出一个catch
19 
20             driver = properties.getProperty("driver");
21             url = properties.getProperty("url");
22             username = properties.getProperty("username");
23             password = properties.getProperty("password");
24 
25             //驱动只用加载一次
26             Class.forName(driver);//抛出一个catch
27 
28         } catch (Exception e) {
29             e.printStackTrace();
30         }
31     }
32     //获取连接
33     public static Connection getConnection() throws SQLException {
34                                         //抛出异常
35         return DriverManager.getConnection(url, username, password);
36     }
37 
38     //释放连接  顺序不能错
39     public static void release(Connection conn, Statement st, ResultSet rs){
40         if (rs != null) {
41             try {
42                 rs.close();
43             } catch (SQLException e) {
44                 e.printStackTrace();
45             }
46         }
47         if (st != null) {
48             try {
49                 st.close();
50             } catch (SQLException e) {
51                 e.printStackTrace();
52             }
53         }
54         if (conn != null) {
55             try {
56                 conn.close();
57             } catch (SQLException e) {
58                 e.printStackTrace();
59             }
60         }
61     }
62 
63     }

插入测试

 1 package com.xing.lesson02.utils;
 2 
 3 import java.sql.Connection;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 import java.sql.Statement;
 7 
 8 public class TestInsert {
 9 
10     public static void main(String[] args) {
11         Connection conn = null;
12         Statement st = null;
13         ResultSet rs = null;
14         try {
15             conn = JdbcUtils.getConnection();//获取数据库连接
16             st = conn.createStatement();//获取sql的执行对象
17 
18             String sql = "INSERT INTO users(id,`NAME`,`PASSWORD`,`email`,`birthday`)" +
19                     "VALUE(4,'haha','123456','48020056@qq.com','2020-1-1')";
20             int i = st.executeUpdate(sql);
21             if(i>0){
22                 System.out.println("插入成功");
23             }
24         } catch (SQLException e) {
25             e.printStackTrace();
26         }finally {
27             JdbcUtils.release(conn,st,rs);
28         }
29     }
30 }

删除测试

 1 package com.xing.lesson02.utils;
 2 
 3 import java.sql.Connection;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 import java.sql.Statement;
 7 
 8 public class TestDelect {
 9     public static void main(String[] args) {
10         Connection conn = null;
11         Statement st = null;
12         ResultSet rs = null;
13         try {
14             conn = JdbcUtils.getConnection();//获取数据库连接
15             st = conn.createStatement();//获取sql的执行对象
16 
17             String sql = "DELETE FROM users WHERE id =4";
18             int i = st.executeUpdate(sql);
19             if(i>0){
20                 System.out.println("删除成功");
21             }
22         } catch (SQLException e) {
23             e.printStackTrace();
24         }finally {
25             JdbcUtils.release(conn,st,rs);
26         }
27     }
28 }

更新检测

 1 package com.xing.lesson02.utils;
 2 
 3 import java.sql.Connection;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 import java.sql.Statement;
 7 
 8 public class TestUpdate {
 9 
10     public static void main(String[] args) {
11         Connection conn = null;
12         Statement st = null;
13         ResultSet rs = null;
14         try {
15             conn = JdbcUtils.getConnection();//获取数据库连接
16             st = conn.createStatement();//获取sql的执行对象
17 
18             String sql = "UPDATE users SET `NAME`='liming',`email`='480200056@qq.com' WHERE id=1";
19             int i = st.executeUpdate(sql);
20             if(i>0){
21                 System.out.println("更新成功");
22             }
23         } catch (SQLException e) {
24             e.printStackTrace();
25         }finally {
26             JdbcUtils.release(conn,st,rs);
27         }
28     }
29 }

查询测试

 1 package com.xing.lesson02.utils;
 2 
 3 import java.sql.Connection;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 import java.sql.Statement;
 7 
 8 public class TestSelect {
 9 
10     public static void main(String[] args) {
11         Connection conn = null;
12         Statement st = null;
13         ResultSet rs = null;
14         try {
15             conn = JdbcUtils.getConnection();//获取数据库连接
16             st = conn.createStatement();//获取sql的执行对象
17 
18             String sql = "SELECT * FROM users ";
19             rs = st.executeQuery(sql);//查询 完毕返回结果集
20 
21             while(rs.next()){
22                 System.out.println(rs.getObject("NAME"));
23                 System.out.println(rs.getObject("id"));
24             }
25         } catch (SQLException e) {
26             e.printStackTrace();
27         }finally {
28             JdbcUtils.release(conn,st,rs);
29         }
30     }
31 }

 

posted @ 2022-04-26 20:13  暴躁C语言  阅读(19)  评论(0)    收藏  举报