一个简单的获取数据库连接的工具类

我们经常在已经搭建好的工程上去访问数据库,执行一些操作,但我不想搭建环境,只接用类去访问呢?这时就需要写一个访问数据库的工具类了。本文介绍两种方法:一种是直接把数据配置写在类里,另一种是把数据库配置写在一个properties属性文件里。

第一种:

package com.easy.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 采用直接赋值的方式获取数据库连接的工具类
 * @author Administrator
 *
 */
public class DBUtils {
	private final static String driver = "oracle.jdbc.driver.OracleDriver";
	private final static String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private final static String user = "test";
	private final static String password = "test";

	public static Connection getConnection() throws ClassNotFoundException,
			SQLException {
		Connection conn = null;
		Class.forName(driver);
		conn = DriverManager.getConnection(url, user, password);
		return conn;
	}

	public static void close(Statement stmt) {
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public static void close(PreparedStatement pstmt) {
		if (pstmt != null) {
			try {
				pstmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

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

	public static void close(Connection conn) {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) {
		Connection conn = null;
		try {
			conn = DBUtils.getConnection();
			System.out.println("所获得的数据库连接为:"+conn);
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} finally {
			DBUtils.close(conn);
		}
	}
}

是不是很简单呢,呵呵,DBUtils里有个Main方法,是用来测试的。

第二种:

package com.easy.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
 * 采用读取属性文件的方式获取数据库连接的工具类
 * @author Administrator
 *
 */
public class DbUtil {
	/** 创建读取properties文件类 */
	private static Properties prop = new Properties();
	/** 设定properties文件路径。properties文件要放在src目录下,放到WEB-INF下是找不到的,
	 * 因为此处用的是getResourceAsStream方法去加载属性文件,而它是根据类加载器来确定路径的,所以要放在src目录下。
	 * 如果是根目录则写成:/xxx.properties;
	 * 如果是当前目录下则写成:xxx.properties;
	 * 如果是其它目录则写成:/xxx/xxx/xxx.properties 
	 * 也可以用:.代表当前目录;..代表上级目录,如:./xxx.properties;../xxx/xxx.properties
	 */
	private static String filePath = "/db.properties";
	//private static String filePath = "db.properties";
	//private static String filePath = "/com/easy/web/db.properties";
	//private static String filePath = "./db.properties";
	//private static String filePath = "../web/db.properties";
	/** 创建ThreadLocal类,用来存放当前线程正在使用的Connection */
	private static final ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
	/** 静态代码块加载properties文件 */
	static {
		InputStream in = DbUtil.class.getResourceAsStream(filePath);
		try {
			prop.load(in);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 此方法用来获取一个Connection。
	 * @return
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	public static Connection getConnection() throws SQLException, ClassNotFoundException {
		Connection conn = tl.get();
		if(conn==null||conn.isClosed()){
			String driver = prop.getProperty("database.driver");
			//System.out.println("driver:"+driver);
			String url = prop.getProperty("database.url");
			//System.out.println("url:"+url);
			String username = prop.getProperty("database.username");
			//System.out.println("username:"+username);
			String password = prop.getProperty("database.password");
			//System.out.println("password:"+password);
			Class.forName(driver);
			conn = DriverManager.getConnection(url,username,password);
			tl.set(conn);
		}
		return conn;
	}
	public static void close(Statement stmt) {
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public static void close(PreparedStatement pstmt) {
		if (pstmt != null) {
			try {
				pstmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

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

	public static void close(Connection conn) {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) {
		Connection conn = null;
		try {
			conn = DbUtil.getConnection();
			System.out.println("所获得的数据库连接为:"+conn);
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} finally {
			DbUtil.close(conn);
		}
	}
}
和第一种一样,有个Main方法用来测试。

总结:

获取数据库核心语句就两句:

①Class.forName(driver);
conn = DriverManager.getConnection(url,username,password);

①加载数据库驱动。不同的数据库,驱动是不一样的,但大概相似。本文用的是Oracle的驱动。驱动是需要驱动包的,本文的驱动包为ojdbc14.jar。

下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html

利用驱动管理器来获取一个数据库连接。getConnection方法需要三个参数:数据库的url,用户名,密码。

以上两种方式其实原理都是一样的,只是获取数据库配置方式不一样而已。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值