⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbmanager.java

📁 运用JSP/servlet/JavaBean 技术
💻 JAVA
字号:
package com.lovo.myutil;

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

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

/**
 * <p>数据库管理员,定义了一个静态方法getConnection,此方法用户获得数据库连接对象</p>
 * @author fenglu
 *
 */
public class DBManager
{
	/** 存dbconfig属性文件 */
	private static Properties properties = new Properties();
	
	static
	{
		try
		{
			/** 加载属性文件 */
			properties.load(DBManager.class.getResourceAsStream(
					"../../../dbconfig.properties"));
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
	
	/**
	 * 此方法可以通过配置dbconfig.properties中(connection-type)的值(此值可以为jdbc或jdbc/QQMail)
	 * 来以不同的方式获得数据库连接对象。可以(值为jdbc时)手工获得数据库连接对象,
	 * 或者(值为jdbc/QQMail)获得pool里的数据库连接对象。
	 * @return 返回Connection数据库连接对象
	 */
	public static Connection getConnection()
	{
		Connection conn = null;//数据库连接对象
		String flag = properties.getProperty("connection-type");//指示是手工还是通过pool获得数据库连接对象
		/**
		 * 如果flag等于jdbc那么就手工获得数据库连接对象
		 */
		if(flag.equals("jdbc"))
		{
			System.out.println("通过手工方式获得数据库连接对象");
			/**
			 * 用手工方法获得数据库连接对象
			 */
			String driver   = properties.getProperty("driver");//数据库驱动信息
			String url      = properties.getProperty("url");//数据库的url信息
			String user     = properties.getProperty("user");//数据库连接用户名信息
			String password = properties.getProperty("password");//数据库连接密码信息
			try
			{
				/** 加载驱动 */
				Class.forName(driver);
			}
			catch (ClassNotFoundException e)
			{
				e.printStackTrace();
			}
			try
			{
				/** 获得数据库连接对象 */
				conn = DriverManager.getConnection(url, user, password);
			}
			catch (SQLException e)
			{
				e.printStackTrace();
			}
		}
		/**
		 * 如果flag等于jdbc/QQMail那么就从pool中获得数据库连接对象
		 */
		if(flag.equals("jdbc/QQMail"))
		{
			System.out.println("通过连接池获得数据库连接对象");
			conn = getPoolConnection();
		}
		return conn;
	}
	
	public static Connection getPoolConnection()
	{
		Connection conn = null;
		String name = "java:comp/env/jdbc/QQMail";
		try
		{
			InitialContext context = new InitialContext();
			DataSource dataSource = (DataSource)context.lookup(name);
			try
			{
				conn = dataSource.getConnection();
			}
			catch (SQLException e)
			{
				e.printStackTrace();
			}
		}
		catch (NamingException e)
		{
			e.printStackTrace();
		}
		return conn;
	}
	
	/**
	 * 关闭所有数据库的相关对象
	 */
	public static void closeAll(Connection conn,
			PreparedStatement state, ResultSet rs)
	{
		/** 如果结果集不为空调用close()方法关闭 */
		if(rs != null)
		{
			/** 关闭结果集对象 */
			try
			{
				rs.close();
			}
			catch (SQLException e)
			{
				e.printStackTrace();
			}
		}
		/** 如果语句不为空调用close()方法关闭 */
		if(state != null)
		{
			/** 关闭语句对象 */
			try
			{
				state.close();
			}
			catch (SQLException e)
			{
				e.printStackTrace();
			}
		}
		/** 如果数据库连接对象不为空调用close()方法关闭 */
		if(conn != null)
		{
			/** 关闭数据库连接对象 */
			try
			{
				conn.close();
			}
			catch (SQLException e)
			{
				e.printStackTrace();
			}
		}
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -