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

📄 dbconnpool.java

📁 1.1 版本的数据库连接池。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
System.out.println(f);
			throw new SQLException();
		}
	}
	
	try {
		
		ResultSet rs = s.executeQuery(query);
		queries ++;
		setBusy(s, rs, query);
		return rs;
	} catch (SQLException e) {
		System.out.println("**Exception in query: " + query);
		System.out.println(e);
		System.out.println("\tExecuting test query");
		try {
			throw new SQLException("manufactured error.");
/*			s.executeQuery("SELECT * FROM IMDPubs_categories");
			System.out.println("\tTest query passed.  Probably a syntax error in query.");
			return null;
*/		} catch (SQLException f) {
			// Drop connection!!!
			drop(s);
			System.out.println("\tTest query failed.  Trying to get another connection.");
			System.out.println(f);
			try {
				s = getStatement(ci);
				System.out.println("\tSuccessful new connection.  Retrying query.");
				try {
					ResultSet rs = s.executeQuery(query);
					System.out.println("\tQuery successful.  Returning Result Set.");
					queries ++;;
					setBusy(s, rs, query);
					return rs;
				} catch (SQLException g) {
					System.out.println("\tUnknown error.  Can connect, can't execute query.");
					System.out.println(g);
					// Drop connection!!!
					return null;
				}
			} catch (Exception g) {
				System.out.println("\tCan't connect.  Database/network error.");
				System.out.println(g);
				return null;		
			}
		}
	}
}
/**
 * Centralized method from which all update queries to the database are run.  This ensures that the
 * database connection is still active.  It also handles some concurrency issues.  For
 * simple queries call executeQuery(...).
 * Creation date: (1/23/00 5:57:12 PM)
 * @return int The result of the update query from the JDBC call.
 * @param query java.lang.String The query string to execute, can ONLY be update.
 */
public synchronized static int executeUpdate(String query, ConnectionInfo ci) throws SQLException {
	java.sql.Statement s;
	try {
		s = getStatement(ci);
	} catch (Exception e) {
System.out.println(e);
//		reconnect();
		try {
			s = getStatement(ci);
		} catch (Exception f) {
System.out.println(f);
			throw new SQLException();
		}
	}

	int num;
	try {
		num = s.executeUpdate(query);
		close(s);
		return num;
	} catch (SQLException e) {
		System.out.println("**Exception in query: " + query);
		System.out.println(e);
		System.out.println("\tExecuting test query");
		try {
			throw new SQLException("manufactured error.");
/*			s.executeQuery("SELECT * FROM IMDPubs_categories");
			System.out.println("\tTest query passed.  Probably a syntax error in query.");
			return null;
*/		} catch (SQLException f) {
			// Drop connection!!!
			drop(s);
			System.out.println("\tTest query failed.  Trying to get another connection.");
			System.out.println(f);
			try {
				s = getStatement(ci);
				System.out.println("\tSuccessful new connection.  Retrying query.");
				try {
					num = s.executeUpdate(query);
					System.out.println("\tQuery successful.  Returning Result Set.");
					close(s);
					return num;
				} catch (SQLException g) {
					System.out.println("\tUnknown error.  Can connect, can't execute query.");
					System.out.println(g);
					// Drop connection!!!
					return -1;
				}
			} catch (Exception g) {
				System.out.println("\tCan't connect.  Database/network error.");
				System.out.println(g);
				return -1;		
			}
		}
	}
}
/**
 * Creates a connection to the Publications Catalogue database based on configuration information
 * read from Int.who.publications.ServletUtils configuration information.  This method also
 * resets the caches.
 * Creation date: (1/13/00 4:28:17 PM)
 * @return java.sql.Connection An active connection to the Publications Catalogue database.
 */
private static java.sql.Statement getConnection(ConnectionInfo ci) throws SQLException, ClassNotFoundException{

/*	Class.forName(ServletUtils.getConfigVal("pubsDB.DriverName"));

	conn = DriverManager.getConnection(ServletUtils.getConfigVal("pubsDB.URL"),
									   ServletUtils.getConfigVal("pubsDB.username"),
									   ServletUtils.getConfigVal("pubsDB.password"));
*/
/*	questionCache = new Hashtable();
	ResultSets = new Vector();
	Statements = new Vector();
*/
/*	Original
	Class.forName(ServletUtils.getConfigVal("metadataDB.DriverName"));
	
	conn = DriverManager.getConnection(ServletUtils.getConfigVal("metadataDB.URL"),
									   ServletUtils.getConfigVal("metadataDB.username"),
									   ServletUtils.getConfigVal("metadataDB.password"));
	Stmt = conn.createStatement();
*/
	Class.forName(ci.getDriver());
	
	Iterator rss = ResultSets.iterator();
	Iterator conns = Connections.iterator();
	Iterator stmts = Statements.iterator();
	Iterator cis = ConnInfos.iterator();
	ResultSet rs;
	java.sql.Connection c;
	java.sql.Statement s;
	ConnectionInfo cie;
	int i = 0;
	while (rss.hasNext()) {
		Object o = rss.next();
		c = (java.sql.Connection) conns.next();
		s = (java.sql.Statement) stmts.next();
		cie = (ConnectionInfo) cis.next();
		if (cie.equals(ci)) {
			if (o == null) {
				ResultSets.setElementAt(new Integer(1), i);
				return s;		
			} else if (o instanceof Integer) {
			
			} else if (o instanceof ResultSet) {
			}
		}
		i ++;
	}

	// Haven't found a statement, must create a new one
	c = DriverManager.getConnection(ci.getURL(), ci.getUsername(), ci.getPassword());


	Connections.addElement(c);
	s = c.createStatement();
	Statements.addElement(s);
	ResultSets.addElement(new Integer(1));
	Queries.addElement("");
	ConnInfos.addElement(ci);
	
	return s;
	
//	return conn;

}
/**
 * Based on a connection to the Publications Catalogue database this method creates a
 * JDBC Statement object which actually does the database querying.
 * Creation date: (1/20/00 10:29:27 AM)
 * @return java.sql.Statement
 */
private static java.sql.Statement getStatement(ConnectionInfo ci) throws Exception {
	Statement s = getConnection(ci);
//	s.setQueryTimeout(30);
	return s;
/*	Original
	if (Stmt == null || conn.isClosed()) {
		getConnection();
	}
	return Stmt;
	*/
}
/**
 * Starts the application.
 * @param args an array of command-line arguments
 */
public static void main(java.lang.String[] args) {
	// Insert code to start the application here.
}
/**
 * Insert the method's description here.
 * Creation date: (7/17/2000 4:18:32 PM)
 * @param s java.sql.Statement
 * @param rs java.sql.ResultSet
 */
public synchronized static void setBusy(java.sql.Statement s, ResultSet rs, String query) {
	
	Iterator rss = ResultSets.iterator();
	Iterator stmts = Statements.iterator();
	java.sql.Statement curr;
	int i = 0;
	while (stmts.hasNext()) {
		curr = (java.sql.Statement) stmts.next();
		if (curr.equals(s)) {
			break;
		}
		i ++;
	}

	ResultSets.setElementAt(rs, i);
	Queries.setElementAt(query, i);
}
/**
 * Insert the method's description here.
 * Creation date: (7/18/2000 12:00:48 PM)
 * @return java.lang.String
 */
public static String status() {
	StringBuffer sb = new StringBuffer();
	sb.append("\n******** All Database********\n");
	Iterator rss = ResultSets.iterator();
	Iterator conns = Connections.iterator();
	Iterator stmts = Statements.iterator();
	Iterator qs = Queries.iterator();
	Iterator cis = ConnInfos.iterator();
	ResultSet rs;
	java.sql.Connection c;
	java.sql.Statement s;
	ConnectionInfo cie;
	int i = 1;
	while (conns.hasNext()) {
		cie = (ConnectionInfo) cis.next();
		sb.append(i + ":" + cie.getURL() + "   " + conns.next() + "   " + stmts.next() + "    " + rss.next() + "    " + qs.next() + "\n");
		i ++;
	}
	return sb.toString();
}
/**
 * Insert the method's description here.
 * Creation date: (7/18/2000 12:00:48 PM)
 * @return java.lang.String
 */
public static String status(ConnectionInfo ci) {
	StringBuffer sb = new StringBuffer();
	sb.append("\n******** Database: " + ci.getURL() + " ********\n");
	Iterator rss = ResultSets.iterator();
	Iterator conns = Connections.iterator();
	Iterator stmts = Statements.iterator();
	Iterator qs = Queries.iterator();
	Iterator cis = ConnInfos.iterator();
	ResultSet rs;
	java.sql.Connection c;
	java.sql.Statement s;
	ConnectionInfo cie;
	int i = 1;
	while (conns.hasNext()) {
		cie = (ConnectionInfo) cis.next();
		if (cie.equals(ci)) {
			sb.append(i + ":" + conns.next() + "   " + stmts.next() + "    " + rss.next() + "    " + qs.next() + "\n");
			i ++;
		}
	}
	return sb.toString();
}
/**
 * Insert the method's description here.
 * Creation date: (2000-10-13 11:49:31 AM)
 * @param ci Int.who.database.ConnectionInfo
 */
public static void testConnection(ConnectionInfo ci) throws SQLException, ClassNotFoundException {

	Statement s = getConnection(ci);
	s.close();
	close(ci);
	
}
}

⌨️ 快捷键说明

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