• 自定义的jdbc连接工具类JDBCUtils【java 工具类】


    JDBCUtils 类设计:

      1. 创建私有的属性*(连接数据库必要的四个变量):dreiver url user password

      2. 将构造函数私有化

      3.将注册驱动写入静态代码块

      4.外界只能通过调用本工具的静态方法 getConnectio() 获取数据库连接,让调用者处理异常(抛出异常)

      5. 资源关闭采用也采用静态方法调用

      升级版:使用 properties 配置文件进行数据库连接配置见下文工具二

    JDBCUtils 代码实现:

    package com.test.utils;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public final class JDBCUtils {
        private static String driver="com.mysql.jdbc.Driver";
        private static String url="jdbc:mysql://localhost:3306/store28";
        private static String user="root";
        private static String password="root1234";
        
        private JDBCUtils(){}
        
        static {
            /**
             * 驱动注册
             */
            try {
                Class.forName(driver);
            } catch (ClassNotFoundException e) {
                throw new ExceptionInInitializerError(e);
            }
            
        }
        
        /**
         * 获取 Connetion
         * @return
         * @throws SQLException
         */
        public static Connection getConnection() throws SQLException{
            return DriverManager.getConnection(url, user, password);
        }
        
        /**
         * 释放资源
         * @param conn
         * @param st
         * @param rs
         */
        public static void colseResource(Connection conn,Statement st,ResultSet rs) {
            closeResultSet(rs);
            closeStatement(st);
            closeConnection(conn);
        }
        
        /**
         * 释放连接 Connection
         * @param conn
         */
        public static void closeConnection(Connection conn) {
            if(conn !=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            //等待垃圾回收
            conn = null;
        }
        
        /**
         * 释放语句执行者 Statement
         * @param st
         */
        public static void closeStatement(Statement st) {
            if(st !=null) {
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            //等待垃圾回收
            st = null;
        }
        
        /**
         * 释放结果集 ResultSet
         * @param rs
         */
        public static void closeResultSet(ResultSet rs) {
            if(rs !=null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            //等待垃圾回收
            rs = null;
        }
    }

    工具一测试:

    package com.test.jdbcTest;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.junit.Test;
    
    import com.test.utils.JDBCUtils;
    
    public class JdbcTest {
        @Test
        public void add() {
            Connection conn = null;
            PreparedStatement st = null;
            ResultSet rs = null;
            
            try {
                // 获取连接
                conn = JDBCUtils.getConnection();
                
                // 编写sql
                String sql = "insert into category values (?,?)";
                
                // 创建语句执行者
                st= conn.prepareStatement(sql);
                
                //设置参数
                st.setString(1, "10");
                st.setString(2, "测试目录");
                
                // 执行sql
                int i = st.executeUpdate();
                
                if(i==1) {
                    System.out.println("数据添加成功!");
                }else {
                    System.out.println("数据添加失败!");
                }
                
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JDBCUtils.colseResource(conn, st, rs);
            }
            
        }
    }

    工具类二(升级版):

    使用 eclipse 在 src 目录下创建 jdbc.properties 文件,写入健值对:

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/store28
    user=root
    password=root1234

    package com.test.utils;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ResourceBundle;
    
    public final class JDBCUtilsPlus {
        private static final String DRIVER;
        private static final String URL;
        private static final String USER;
        private static final String PASSWORD;
        
        private JDBCUtilsPlus(){}
        
        static {
            ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
            
            DRIVER = bundle.getString("driver");
            URL = bundle.getString("url");
            USER = bundle.getString("user");
            PASSWORD = bundle.getString("password");
            
            /**
             * 驱动注册
             */
            try {
                Class.forName(DRIVER);
            } catch (ClassNotFoundException e) {
                throw new ExceptionInInitializerError(e);
            }
        }
        
        /**
         * 获取 Connetion
         * @return
         * @throws SQLException
         */
        public static Connection getConnection() throws SQLException{
            return DriverManager.getConnection(URL, USER, PASSWORD);
        }
        
        /**
         * 释放资源
         * @param conn
         * @param st
         * @param rs
         */
        public static void colseResource(Connection conn,Statement st,ResultSet rs) {
            closeResultSet(rs);
            closeStatement(st);
            closeConnection(conn);
        }
        
        /**
         * 释放连接 Connection
         * @param conn
         */
        public static void closeConnection(Connection conn) {
            if(conn !=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            //等待垃圾回收
            conn = null;
        }
        
        /**
         * 释放语句执行者 Statement
         * @param st
         */
        public static void closeStatement(Statement st) {
            if(st !=null) {
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            //等待垃圾回收
            st = null;
        }
        
        /**
         * 释放结果集 ResultSet
         * @param rs
         */
        public static void closeResultSet(ResultSet rs) {
            if(rs !=null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            //等待垃圾回收
            rs = null;
        }
    }

    工具测试:

    package com.test.jdbcTest;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.junit.Test;
    
    import com.test.utils.JDBCUtils;
    import com.test.utils.JDBCUtilsPlus;
    
    public class JdbcTest {
        @Test
        public void select() {
            Connection conn = null;
            PreparedStatement st = null;
            ResultSet rs = null;
            
            try {
                // 获取连接
                conn = JDBCUtilsPlus.getConnection();
                
                // 编写sql
                String sql = "select * from category";
                
                // 创建语句执行者
                st= conn.prepareStatement(sql);
                
                rs = st.executeQuery();
                
                while(rs.next()) {
                    System.out.println(rs.getString(1)+"..."+rs.getString(2));
                }
                
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JDBCUtilsPlus.colseResource(conn, st, rs);
            }
            
        }
    }
  • 相关阅读:
    Drupal 7 中文安装教程
    苹果之硬盘启动安装
    STP详解
    RedHat Install
    Linux密码更改
    win8.1开启虚拟wifi
    跳过安装密钥安装系统
    虚拟机中Linux安装Tools
    桌面虚拟化之XenDesktop7
    桌面虚拟化之部署DDC-5.6
  • 原文地址:https://www.cnblogs.com/mujingyu/p/7878687.html
Copyright © 2020-2023  润新知