dbmanager.java
来自「短信系统SMS:支持普通短信、长短信和wap push短信的发送。」· Java 代码 · 共 143 行
JAVA
143 行
package com.ekun.common.db;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import com.ekun.common.log.*;
import com.ekun.common.util.*;
public class DBManager
{
public DBManager() {
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
//datasource cache
private static Hashtable dsHash = new Hashtable();
/**
* 根据jdbc驱动参数获得数据库连接。
* @param jdbcDriver String
* @param jdbcUrl String
* @param dbUserName String
* @param DBPasswd String
* @return Connection
*/
private static Connection getDBConnection(String jdbcDriver, String jdbcUrl, String dbUserName,
String dbPasswd) throws DBAccessException
{
Connection conn = null;
try
{
java.sql.Driver driver = (java.sql.Driver) Class.forName(jdbcDriver).newInstance();
DriverManager.registerDriver(driver);
conn = DriverManager.getConnection(jdbcUrl, dbUserName, dbPasswd);
}
catch (Exception ex)
{
ex.printStackTrace();
throw new DBAccessException(ex.getMessage(), ex);
}
return conn;
}
/**
* 根据配置获得Context
* @throws NamingException
* @return Context
*/
private static Context getDefaultContext() throws NamingException
{
Hashtable htable = new Hashtable();
htable.put(Context.INITIAL_CONTEXT_FACTORY, DBConfigure.getInstance().getJavaNameingFactory());
htable.put(Context.PROVIDER_URL, DBConfigure.getInstance().getJavaNameingProvider());
InitialContext ctx = null;
ctx = new InitialContext(htable);
return ctx;
}
/**
* 根据配置项中的JNDI参数获取数据库连接。
* @return Connection
*/
private static Connection getJNDIDBConnection() throws DBAccessException
{
Connection conn = null;
String jndiName = DBConfigure.getInstance().getJNDIName();
try
{
Context cxt = getDefaultContext();
DataSource ds = (DataSource) dsHash.get(jndiName);
if (ds == null)
{
ds = (DataSource) cxt.lookup(jndiName);
//cache it
dsHash.put(jndiName, ds);
}
conn = ds.getConnection();
}
catch (NamingException nmex)
{
throw new DBAccessException("getDefaultContext Error!", nmex);
}
catch (SQLException sqlex)
{
throw new DBAccessException("lookup jnid error!", sqlex);
}
return conn;
}
private void jbInit() throws Exception {
}
public static synchronized Connection getDBConn() throws DBAccessException
{
DBConfigure instance = DBConfigure.getInstance();
if(instance.isDevModal())
{
if(instance.isUseDBPool())
{
try{
return JdbcConnectionPool.getConnection();
}catch(SQLException sqlex){
throw new DBAccessException(sqlex.getMessage(), sqlex);
}
}
else
return getDBConnection(instance.getJDBCDriver(),
instance.getJDBCUrl(),
instance.getDBUserName(),
instance.getDBPassword());
}
else
{
return getJNDIDBConnection();
}
}
public static void main(String[] args)
{
try
{
DBConfigure.getInstance().loadConfig("config/db.ini");
DBConfigure.getInstance().setDevModal(false);
DBConfigure.getInstance().setUseDBPool(true);
DBConfigure.getInstance().setTrace(0);
DBConfigure.getInstance().setDumpinfo(0);
Connection conn = DBManager.getDBConn();
ClearDBResource.closeConnection(conn);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?