JDBC 封装MySQL数据库连接类

方式一:创建一个DBHelper类,封装代码,但这种方式导致程序代码的耦合度比较高!

package com.andy.shopping.util.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * 连接数据库类
 * @author andy
 *
 */
public class DBHelper {
    //数据库驱动
    private static final String DRIVER = "com.mysql.jdbc.Driver";
    //连接数据库的URL地址
    private static final String URL = "jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8";
    //数据库用户名
    private static final String USER = "用户名";
    //数据库密码
    private static final String PASSWORD = "密码";
    //创建连接数据库对象
    private static Connection connection = null;
    
    /**
     * 静态块加载驱动
     */
    static {
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 单例模式返回数据库连接对象
     * Ctrl+Shif+x:转换字符串大小写快捷键
     * @return
     */
    public static Connection getConnection(){
        if (null == connection) {
            try {
                connection = DriverManager.getConnection(URL, USER, PASSWORD);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return connection;
        }else {
            return connection;    
        }
    }
    
    /**
     * 测试连接
     * @param args
     */
    public static void main(String[] args){
        if (null != getConnection()) {
            System.out.println(getConnection());
            System.out.println("数据库连接成功");
        } else {
            System.out.println("数据库连接失败");
        }
    }
        
}
 

连接成功后,注释/删除测试方法main()即可使用!

测试结果:

JDBC 封装MySQL数据库连接类_第1张图片

 

方式二:降低程序代码的耦合度

 步骤1:

在项目src文件夹下创建文件db.properties 或 db.txt,内容如下!此文件位置千万别放错!

drivers=com.mysql.jdbc.Driver
urls=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8
users=root
passwords=123456

 步骤2:

创建DBHelper类,封装代码,代码如下!

package com.andy.sms.utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * 连接数据库类
 * @author andy
 *
 */
public class DBHelper {
    //数据库驱动
    private static String driver;
    //连接数据库的URL地址
    private static String url;
    //数据库用户名
    private static String user;
    //数据库密码
    private static String password;
    //创建连接数据库对象
    private static Connection connection = null;
    
    /**
     * 静态块加载驱动
     * 读文件操作
     */
    static {
        /*
         * 为了读取文件,需要获取InputStream。注意:db.properties文件必须放到src文件夹下
         * Class class = DBHelper.class;获取DBHelper类对象
         * ClassLoader loader = class.getClassLoader();
         * 通过Class对象获取ClassLoader(字节码加载器)对象
         * InputStream in = loader.getResourceAsStream("db.properties");
         * InputStream in = loader.getResourceAsStream("db.txt");
         * 调用ClassLoader的方法获取InputStream
         * 最后:合并以上3行代码
         */
//        InputStream in = DBHelper.class.getClassLoader().getResourceAsStream("db.properties");
        InputStream in = DBHelper.class.getClassLoader().getResourceAsStream("db.txt");
        //为了方便读取db.properties文件,创建一个java.util.Properties类的对象
        Properties properties = new Properties();
        
        try {
            //把properties对象与流连接起来
            properties.load(in);
            //使用properties对象读取文件内容,并赋值给相应的常量
            driver = properties.getProperty("drivers");
            url = properties.getProperty("urls");
            user = properties.getProperty("users");
            password = properties.getProperty("passwords");
            //加载MySQL驱动驱动
            try {
                Class.forName(driver);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }    
    }
    
    /**
     * 单例模式返回数据库连接对象
     * Ctrl+Shif+x:转换字符串大小写快捷键
     * @return
     * @throws SQLException 
     */
    public static Connection getConnection() throws SQLException{
        if (null == connection || connection.isClosed()) {
            connection = DriverManager.getConnection(url, user, password);
        }
        return connection;    
    }
    
    /**
     * 关闭资源
     * @param connection
     * @param state
     * @param result
     * @throws SQLException 
     */
    public static void close(Connection connection, Statement state, ResultSet res) throws SQLException{
        if (null != connection && !connection.isClosed()) {
            connection.close();
        }
        if (null != state && !state.isClosed()) {
            state.close();
        }
        if (null != res && !res.isClosed()) {
            res.close();
        }    
    }

    /**
     * 测试连接
     * @param args
     * @throws SQLException 
     */
    public static void main(String[] args) throws SQLException {
        if (null != getConnection()) {
            System.out.println(getConnection());
            System.out.println("数据库连接成功");
        } else {
            System.out.println("数据库连接失败");
        }
    }
    
}

 步骤3:打印测试结果!

JDBC 封装MySQL数据库连接类_第2张图片

小编刚学Java不久,如有更好的办法,还请大神多多指点,谢谢!

 

你可能感兴趣的:(JDBC,数据库)