📄 jdbcmanager.java
字号:
package net.yefei.cmn.db;
import java.sql.*;
import javax.sql.*;
import java.io.*;
import java.util.*;
import java.util.logging.Logger;
import java.util.logging.Level;
/*
* @author ye fei
* @version 1.00, 2003/04/15
* @copyright www.studyjava.com
*/
import org.apache.struts.digester.*;
public class JDBCManager implements JDBCManagerIF {
private final static String DATABASE_KEY = "database.define.file";
private Hashtable dataS = new Hashtable();
private static Vector bs = new Vector();
public static void addDataSourceBean(DataSourceBean b){
bs.add(b);
}
public JDBCManager(){
}
public synchronized void setup(File f) throws Exception{
setup(f, false);
}
synchronized void setup(File f, boolean noPrePool) throws Exception{
if(noPrePool)
setup(f, 0);
else
setup(f, -1);
}
synchronized void setup(File f, int min) throws Exception{
Digester digester = new Digester();
digester.push(this);
//digester.setDebug(0xffff);
digester.setValidating(false);
//It's an important instruction that it can binding the two obj
//and excute the instrution through the parma.
digester.addObjectCreate("database/data-source",
"net.yefei.cmn.db.DataSourceBean");
digester.addCallMethod("database/data-source/name", "setName", 0);
digester.addCallMethod("database/data-source/class-name", "setClassName", 0);
digester.addCallMethod("database/data-source/driver-class", "setDriverClass", 0);
digester.addCallMethod("database/data-source/db-url", "setDbUrl", 0);
digester.addCallMethod("database/data-source/db-user", "setDbUser", 0);
digester.addCallMethod("database/data-source/db-password", "setDbPassword", 0);
digester.addCallMethod("database/data-source/auto-commit", "setAutoCommit", 0);
digester.addCallMethod("database/data-source/max-count", "setMaxCount", 0);
digester.addCallMethod("database/data-source/min-count", "setMinCount", 0);
digester.addCallMethod("database/data-source/ping-command", "setPingCommand", 0);
digester.addCallMethod("database/data-source/ping-query", "setPingQuery", 0);
digester.addCallMethod("database/data-source/read-only", "setReadOnly", 0);
digester.addCallMethod("database/data-source/login-timeout", "setLoginTimeout", 0);
digester.addCallMethod("database/data-source/debug", "setDebug", 0);
FileInputStream inp = new FileInputStream(f);
Object root = digester.parse(inp);
//System.out.println("root=" + root.getClass().getName());
inp.close();
DataSourceBean dsb;
Enumeration en = bs.elements();
for(; en.hasMoreElements();){
dsb = (DataSourceBean)en.nextElement();
//System.out.println("" + dsb);
if(min != -1){
//dsb.setMaxCount("1");
dsb.setMinCount("" + min);
}
setupDataSource(dsb);
}
digester.clear();
}
private void setupDataSource(DataSourceBean b){
DbDataSource ds = null;
try{
ds = (DbDataSource)Class.forName(b.getClassName()).newInstance();
ds.init(b);
dataS.put(b.getName(),ds);
}catch(Exception e){
// System.out.println("Cant find StrutsDataSource in the database.xml");
}
}
public synchronized DbDataSource lookupDataSource(){
return (DbDataSource)dataS.get("default");
}
public synchronized DbDataSource lookupDataSource(String name){
return (DbDataSource)dataS.get(name);
}
//public ConnectionPoolDataSource lookupConnectionPoolDataSource(String name){
// return null;
//}
public Connection getConnection() throws SQLException,NoConnectionException{
return getConnection("default");
}
public Connection getConnection(String name) throws SQLException,NoConnectionException{
DataSource ds = (DataSource)dataS.get(name);
if(ds == null)
throw new NoConnectionException(name);
return ds.getConnection();
}
public synchronized void destroy(){
Enumeration e = dataS.elements();
for(; e.hasMoreElements() ;){
DbDataSource ds = (DbDataSource)e.nextElement();
ds.destroy();
}
dataS.clear();
}
public int getMaxCount(){
return getMaxCount("default");
}
public int getMaxCount(String name){
DbDataSource ds = lookupDataSource(name);
if(ds == null)
return -1;
else
return ds.getMaxCount();
}
public int getMinCount(){
return getMinCount("default");
}
public int getMinCount(String name){
DbDataSource ds = lookupDataSource(name);
if(ds == null)
return -1;
else
return ds.getMinCount();
}
public boolean getAutoCommit(){
return getAutoCommit();
}
public boolean getAutoCommit(String name){
DbDataSource ds = lookupDataSource(name);
if(ds == null)
return false;
else
return ds.getAutoCommit();
}
public int getCashedConnetionCount(){
return getCashedConnetionCount("default");
}
public int getCashedConnetionCount(String name){
DbDataSource ds = lookupDataSource(name);
if(ds == null)
return -1;
else
return ds.getCashedConnetionCount();
}
public static void main(String[] argv){
JDBCManager dbx = new JDBCManager();
try{
dbx.setup(new File("database.xml"));
dbx.getConnection();
System.out.println("Database connected successfully");
//dbx.getConnection("s1");
}catch(Exception e){
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -