静态类封装JDBC工具方法简化调用          返回主页

本文介绍如何使用静态类封装常用JDBC操作简化调用过程及减少重复代码的书写。

静态类:
    静态类方法实际上属于类,
    在类加载时被加载器载入内存中。
    不同任何类实例相关,也不允许访问任何实例属性;
    因此这些方法可以被共享,可以通过类名来调用而不用先实例化一个对象

因此我们可以将JDBC的常用方法及语句,诸如连接URL,用户名,密码以及连接过程,CURD过程封装为一个静态类,在测试方法中直接调用,只需要传入要执行的SQL语句,这样能够大幅减少冗余代码的书写,提高代码重用。

一.DBUtils.java(静态封装类)

1.静态常量,获取getConnection()参数

private static String url = "jdbc:mysql://localhost/test?
useUnicode=true&characterEncoding=utf-8";
private static String user = "name";
private static String passwd = "passwd";

2.getConn()获取数据库连接,返回Connection对象,供CURD方法直接调用

    public static Connection getConn(){

        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(url, user, passwd);
            System.out.println("链接成功 " + connection.getClass().getName() + "\n" 
                    + connection.getMetaData().getURL());
            return connection;
        } catch (ClassNotFoundException|SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

3.insertIntoDB(String sql)插入方法(C);

    public static String insertIntoDB(String sql) throws SQLException {
        Connection connection = DBUtils.getConn();
        Statement statement = connection.createStatement();
        int resultFlag = statement.executeUpdate(sql);
        if (resultFlag == 1) {
            DBUtils.close(null, statement, connection);
            return "insert data successed!";
        } else {
            return "insert data failed!";
        }
    }

备注:检查statement.excuteUpdate()返回值判断是否插入成功

4.UpdateDataOfDB(String sql)更新方法(U);

public static String UpdateDataOfDB(String sql) throws SQLException {
        Connection connection = DBUtils.getConn();
        Statement statement = connection.createStatement();
        int resultFlag = statement.executeUpdate(sql);
        if (resultFlag == 1) {
            DBUtils.close(null, statement, connection);
            return "update data successed!";
        } else {
            return "update data failed!";
        }

    }

备注:同上检查statement.excuteUpdate()返回值判断是否插入成功

5.selectUser(String sql)查询方法(R);

public static ResultSet SelectUser(String sql) throws SQLException {
        Connection connection = DBUtils.getConn();
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        return resultSet;
    }

6.DeleteDataOfDB(String sql)删除方法(D);

public static String DeleteDataOfDB(String sql) throws SQLException {
        Connection connection = DBUtils.getConn();
        Statement statement = connection.createStatement();
        int resultFlag = statement.executeUpdate(sql);
        if (resultFlag == 1) {
            DBUtils.close(null, statement, connection);
            return "Delete data successed!";
        } else {
            return "Delete data failed!";
        }
    }

备注:同上检查statement.excuteUpdate()返回值判断是否插入成功

7.Close()方法关闭连接,关闭顺序与连接建立顺序相反

public static void close(ResultSet rs, Statement state, Connection conn) {  
            if (rs != null) {  
                try {  
                    rs.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
                rs = null;  
            }  
            if (state != null) {  
                try {  
                    state.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
                state = null;  
            }  
            if (conn != null) {  
                try {  
                    conn.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
                conn = null;  
            }  
        }  

二.测试方法(语句均在main方法中执行)

1.插入测试

String sql = "insert into test values(null, '王老五', 'admin')";
System.out.println(DBUtils.insertIntoDB(sql));

结果:

 11  王老五        admin 

2.修改测试

String sql = "update test set username = '喵帕斯' where id='11'";
System.out.println(DBUtils.UpdateDataOfDB(sql));

结果:

 11  喵帕斯        admin  

3.查询测试

String sql = "select *  from test where id='10'";
ResultSet resultSet = DBUtils.SelectUser(sql);

while (resultSet.next()) {
    String username = resultSet.getString("username"); 
    String password = resultSet.getString("password");
    System.out.println("username" + username);
    System.out.println("password:" + password);
}

结果:

username喵帕斯
password:admin

4.删除测试

String sql = "delete from test where id = '10'";
System.out.println(DBUtils.DeleteDataOfDB(sql));

结果:

    id  username   password  
    ------  ---------  ----------
     1  test1      123       
     2  test       234       
     4  345        345       
     5  张三       admin     
     7  345        345       
     8  张三       admin     
     9  张三       admin     
    11  喵帕斯      admin

id为“10”的用户已删除

三.小结

本文主要介绍了如何使用java静态类封装常用的数据库连接操作,从而减少代码的书写,提高代码重用性。

By:snowalker