📄 dbconnpool.java
字号:
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 + -