优米格
分享有营养的

Java连接数据库的工具类

BraUndress.png

本文提供了一种在Java中实现数据库连接工具类的方法,具体如下:

1.配置文件

配置文件db.properties内容如下:

#mysql
classname=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/stock
username=root
pwd=1234567890

#oracle
#classname=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@192.168.0.26:1521:tarena
#username=jsd1307
#pwd=jsd1307

2.工具类代码

进行数据库连接相关操作的代码如下:

package util;

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

/**
 * 工具类,提供连接
 * 
 * @author cobcmw
 * 
 */
public class DBUtil {
    private static ThreadLocal<Connection> connections = new ThreadLocal<Connection>();
    private static Properties props = new Properties();
    static {
        InputStream ips = DBUtil.class.getClassLoader().getResourceAsStream(
                "util/db.properties");
        try {
            props.load(ips);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("读取db.properties文件失败");
        }
    }
    private static String className = props.getProperty("classname");
    private static String url = props.getProperty("url");
    private static String username = props.getProperty("username");
    private static String pwd = props.getProperty("pwd");

    public static void beginTranaction() throws SQLException {
        try {
            Connection conn = getConnection();
            conn.setAutoCommit(false);
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("启动事务失败");
            throw e;
        }
    }

    public static void commit() throws SQLException {
        try {
            Connection conn = getConnection();
            conn.commit();
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("提交事务失败");
            throw e;
        } finally {
            close();
        }
    }

    public static void rollback() throws SQLException {
        try {
            Connection conn = getConnection();
            conn.rollback();
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("回滚事务失败");
            throw e;
        } finally {
            close();
        }
    }

    public static Connection getConnection() throws SQLException {
        Connection conn = connections.get();
        if (conn == null) {
            conn = getConn();
            connections.set(conn);
        }
        return conn;
    }

    public static void close() {
        Connection conn = connections.get();
        if (conn != null) {
            try {
                conn.close();
                connections.set(null);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    private static Connection getConn() throws SQLException {
        Connection conn = null;
        try {
            Class.forName(className);
            conn = DriverManager.getConnection(url, username, pwd);
        } catch (ClassNotFoundException e) {
            // 记日志
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
            throw e;
        }
        return conn;
    }

    /**
     * 关闭连接
     */
    private static void close(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * @param args
     * @throws SQLException
     */
    public static void main(String[] args) throws SQLException {
        System.out.println(getConnection());
    }

}
赞(0)
未经允许禁止转载:优米格 » Java连接数据库的工具类

评论 抢沙发

合作&反馈&投稿

商务合作、问题反馈、投稿,欢迎联系

广告合作侵权联系