📄 dbmanager.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 + -