Difference between revisions of "JDBC Benchmark"
Jump to navigation
Jump to search
PeterHarding (talk | contribs) (New page: See http://www.performiq.com.au/kb/images/JDBCBench.tar Category:Java Category:JDBC Category:Benchmarks) |
PeterHarding (talk | contribs) |
||
| Line 1: | Line 1: | ||
=Packaged Benchmark= | |||
See http://www.performiq.com.au/kb/images/JDBCBench.tar | See http://www.performiq.com.au/kb/images/JDBCBench.tar | ||
=JDBCTest= | |||
<pre> | |||
// | |||
// DISCLAIMER OF WARRANTIES. | |||
// The following [enclosed] code is sample code created by IBM | |||
// Corporation. This sample code is not part of any standard or IBM | |||
// product and is provided to you solely for the purpose of assisting | |||
// you in the development of your applications. The code is provided | |||
// "AS IS". IBM MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT | |||
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | |||
// FOR A PARTICULAR PURPOSE, REGARDING THE FUNCTION OR PERFORMANCE OF | |||
// THIS CODE. THIS CODE MAY CONTAIN ERRORS. IBM shall not be liable | |||
// for any damages arising out of your use of the sample code, even | |||
// if it has been advised of the possibility of such damages. | |||
// | |||
import java.sql.*; | |||
import javax.sql.*; | |||
import java.io.*; | |||
import java.awt.*; | |||
import java.awt.event.*; | |||
public class jdbctest { | |||
public String driverclassname; | |||
public String DBURL; | |||
public String dbprefix = "jdbc:"; | |||
public Connection con; | |||
public Statement stmt; | |||
public BufferedReader instream; | |||
public long operationTimer; | |||
public String response = "0"; | |||
public String globaluid = null; | |||
public String globalpwd = null; | |||
public String dbhostname; | |||
public String dbport; | |||
public String dbname; | |||
public ClassLoader loader=null; | |||
public Class dsClass=null; | |||
ConnectionPoolDataSource ds=null; | |||
public static final int DATASOURCECONNECTIONS=10; | |||
// Capture window events... | |||
static private class FrameCloser extends WindowAdapter { | |||
public void windowClosing(WindowEvent we) { | |||
System.out.println("windowClosing..." + we); | |||
we.getWindow().dispose(); | |||
System.exit(0); | |||
} | |||
} | |||
// Capture key events... | |||
static private class KeyInterceptor implements KeyListener { | |||
public void keyTyped(java.awt.event.KeyEvent ke) { | |||
} | |||
public void keyPressed(java.awt.event.KeyEvent ke) { | |||
} | |||
public void keyReleased(java.awt.event.KeyEvent ke) { | |||
// System.out.println("keyReleased..." + ke); | |||
if (ke.getKeyCode() == KeyEvent.VK_ENTER) { | |||
TextField tf = (TextField) ke.getComponent(); | |||
synchronized (tf) { | |||
tf.notify(); | |||
} | |||
} // if enter key is pressed | |||
} | |||
} | |||
public static void main(String args[]) { | |||
System.out.println("JDBC Test starting..."); | |||
jdbctest ct = new jdbctest(); | |||
ct.init(args); // Loads jdbc driver | |||
ct.connect(); // sets connection | |||
if (ct.con == null) { | |||
System.out.println("Connection to " + ct.DBURL + " failed!"); | |||
System.exit(33); | |||
} | |||
System.out.println("Connection Successful: " + ct.con); | |||
System.out.println( | |||
"Connection took " + ct.operationTimer + " milliseconds to complete"); | |||
try { | |||
System.out.println("AutoCommit is: " + ct.con.getAutoCommit()); | |||
} catch (SQLException s) { | |||
s.printStackTrace(); | |||
System.out.println("Error code is: " + s.getErrorCode()); | |||
System.out.println("SQLState is: " + s.getSQLState()); | |||
System.exit(33); | |||
} | |||
do { | |||
try { | |||
if (!(ct.response.equals("11")) && !(ct.response.equals("10"))) | |||
{System.out.println("Create new statement..."); | |||
ct.stmt = ct.con.createStatement();} | |||
} catch (SQLException se) { | |||
se.printStackTrace(); | |||
System.out.println("Error code is: " + se.getErrorCode()); | |||
System.out.println("SQLState is: " + se.getSQLState()); | |||
System.exit(33); | |||
} | |||
} while (ct.process()); | |||
try { | |||
if (ct.stmt != null) ct.stmt.close(); | |||
ct.con.close(); | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
} | |||
// System.exit ??? | |||
System.exit(33); | |||
} | |||
public void init(String args[]) { | |||
instream = new BufferedReader((new InputStreamReader(System.in))); | |||
while (driverclassname == null) { | |||
System.out.println( | |||
"Please respond:\n\t1 - For DB2\n\t2 - For DB2/Pure Network Client\n\t3 - For Oracle (thin) \n\t4 - For Oracle (oci8)\n\t5 - For Informix\n\t6 - For Sybase\n\t7 - For Cloudscape - (Local)\n\t8 - For Cloudscape - (RMI)\n\t9 - For SQLServer (Microsoft Driver)\n\t10 - For SQLServer (SequeLink driver)\n\t11 - For SQLServer (WebSphere embedded Connect JDBC driver)\n\t12 - For SQLServer(Data Direct Technologies Connect JDBC driver)"); | |||
response = readLine(); | |||
if (response.equals("1")) { | |||
driverclassname = "COM.ibm.db2.jdbc.app.DB2Driver"; | |||
dbprefix += "db2:"; | |||
} else | |||
if (response.equals("2")) { | |||
driverclassname = "COM.ibm.db2.jdbc.net.DB2Driver"; | |||
dbprefix += "db2:"; | |||
} else | |||
if (response.equals("3")) { //Thin Driver | |||
driverclassname = "oracle.jdbc.driver.OracleDriver"; | |||
dbprefix += "oracle:thin:"; | |||
} else | |||
if (response.equals("4")) { //Thick Driver | |||
driverclassname = "oracle.jdbc.driver.OracleDriver"; | |||
dbprefix += "oracle:oci8:"; | |||
} else | |||
if (response.equals("5")) { | |||
driverclassname = "com.informix.jdbc.IfxDriver"; | |||
dbprefix += "informix-sqli:"; | |||
} else | |||
if (response.equals("6")) { | |||
driverclassname = "com.sybase.jdbc2.jdbc.SybDriver"; | |||
dbprefix += "sybase:"; | |||
} else | |||
if (response.equals("7")) { | |||
driverclassname = "COM.cloudscape.core.JDBCDriver"; | |||
dbprefix += "cloudscape:"; | |||
} else | |||
if (response.equals("8")) { | |||
driverclassname = "COM.cloudscape.core.RmiJdbcDriver"; | |||
dbprefix += "cloudscape:rmi:"; | |||
} else | |||
if (response.equals("9")) { | |||
driverclassname = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; | |||
dbprefix += "microsoft:sqlserver:"; | |||
} else | |||
if (response.equals("10")) { | |||
// driverclassname = "com.merant.sequelink.jdbcx.datasource.SequeLinkDataSource"; | |||
driverclassname = "com.ddtek.jdbcx.sequelink.SequeLinkDataSource"; | |||
dbprefix += "sequelink:"; | |||
} else | |||
if (response.equals("11")) { | |||
driverclassname = "com.ibm.websphere.jdbcx.sqlserver.SQLServerDataSource"; | |||
dbprefix += "sequelink:"; | |||
} else | |||
if (response.equals("12")) { | |||
driverclassname = "com.ddtek.jdbcx.sqlserver.SQLServerDataSource"; | |||
dbprefix += "sequelink:"; | |||
} else | |||
System.out.println("Invalid selection: specify an option 1-12."); | |||
} | |||
System.out.println("Loading jdbc driver: " + driverclassname); | |||
try { | |||
if (Integer.parseInt(response) < DATASOURCECONNECTIONS) | |||
{ | |||
Class.forName(driverclassname); | |||
System.out.println(driverclassname + " was loaded successfully"); | |||
} | |||
else | |||
{loader = Thread.currentThread().getContextClassLoader(); | |||
if (loader == null) | |||
loader = ClassLoader.getSystemClassLoader(); | |||
dsClass=loader.loadClass(driverclassname); | |||
} | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
System.out.println( | |||
"Please modify you classpath to include the class: " + driverclassname); | |||
System.out.println( | |||
"To be sure that you have this class in your classpath, issue:\n javap " | |||
+ driverclassname); | |||
System.exit(33); | |||
} | |||
} | |||
public void connect() { | |||
while ((DBURL == null) && (Integer.parseInt(response) < DATASOURCECONNECTIONS)) { | |||
System.out.println("Please enter connection URL info, e.g:"); | |||
if (driverclassname.endsWith(".app.DB2Driver")) { | |||
System.out.println("jdbc:db2:dbname or dbname"); | |||
} else | |||
if (driverclassname.endsWith(".net.DB2Driver")) { | |||
System.out.println( | |||
"jdbc:db2://<serverName>:<port>/<dbname> or //<serverName>:<port>/<dbName>"); | |||
} else | |||
if (driverclassname.endsWith(".OracleDriver")) { | |||
if (response.equals("4")) { | |||
System.out.println( | |||
"jdbc:oracle:oci8:@<hostname>:<port>:<dbname> or @<hostname>:<port>:<dbname>"); | |||
} else { | |||
System.out.println( | |||
"jdbc:oracle:thin:@<hostname>:<port>:<dbname> or @<hostname>:<port>:<dbname>"); | |||
} | |||
} else | |||
if (driverclassname.endsWith(".IfxDriver")) | |||
System.out.println( | |||
"jdbc:informix-sqli://<hostname>:<port>/<dbname>:INFORMIXSERVER=<ifxservername>"); | |||
else | |||
if (driverclassname.endsWith(".SybDriver")) | |||
System.out.println("jdbc:sybase:<dbProtocol>:<hostname>:<port>/<dbname>"); | |||
else | |||
if (driverclassname.endsWith(".SQLServerDriver")) | |||
System.out.println("jdbc:microsoft:sqlserver://<hostname>:<port>;DatabaseName=<dbname>"); | |||
else | |||
if (driverclassname.endsWith(".JDBCDriver")) | |||
System.out.println("jdbc:cloudscape:<dbname>;create=<true|false>"); | |||
else | |||
if (driverclassname.endsWith(".RmiJdbcDriver")) | |||
System.out.println("jdbc:cloudscape:rmi://<hostname>:<rmi port>/<dbname> or //<hostname>:<rmi port>/<dbname"); | |||
if (!(driverclassname.endsWith("SequeLinkDriver"))) | |||
DBURL = readLine(); | |||
else | |||
DBURL = ""; | |||
} | |||
if (DBURL==null) DBURL=""; | |||
if (!DBURL.startsWith(dbprefix)) | |||
DBURL = dbprefix + DBURL; | |||
String userid = null; | |||
{ | |||
if (Integer.parseInt(response) < 10) | |||
System.out.println("Please enter userid for connection to " + DBURL); | |||
else if (Integer.parseInt(response) < 13) | |||
System.out.println("Please enter userid for connection to Microsoft SQL Server:"); | |||
userid = readLine(); | |||
System.out.println("userid is: '" + userid + "'"); | |||
} | |||
String password = null; | |||
if (userid != null && !userid.equals("")) { | |||
System.out.println( | |||
"Please enter password " | |||
+ " =====> WARNING: PASSWORD NOT HIDDEN <====== "); | |||
System.out.println( | |||
"enter 'gui' instead of you password for a secure GUI prompt)"); | |||
password = readLine(); | |||
if (password.equalsIgnoreCase("gui")) | |||
password = getPassword(userid); | |||
} | |||
globaluid = userid; | |||
globalpwd = password; | |||
try { | |||
//per L3, DataSource approach is used with WS 4.x, so let's do it the same way | |||
if (Integer.parseInt(response) >= DATASOURCECONNECTIONS) { | |||
con = this.getDataSourceConnection(userid, password); | |||
} else { //non-SQLServer | |||
if (userid == null || userid.equals("")) { | |||
long start = System.currentTimeMillis(); | |||
con = DriverManager.getConnection(DBURL); | |||
operationTimer = System.currentTimeMillis() - start; | |||
} else { | |||
long start = System.currentTimeMillis(); | |||
con = DriverManager.getConnection(DBURL, userid, password); | |||
operationTimer = System.currentTimeMillis() - start; | |||
} | |||
} | |||
} catch (SQLException se) { | |||
se.printStackTrace(); | |||
System.out.println("Error code is: " + se.getErrorCode()); | |||
System.out.println("SQLState is: " + se.getSQLState()); | |||
// See if we can help the user with diagnosing the problem: | |||
boolean network_connect_problem = false; | |||
if (driverclassname.equals("oracle.jdbc.driver.OracleDriver")) { | |||
if ((se.getSQLState() == null) && (se.getErrorCode() == 17002)) { | |||
System.out.println("Connection to the Oracle server failed.\n"); | |||
System.out.println( | |||
"Unable to connect to @hostname:port specified in the DB URL."); | |||
network_connect_problem = true; | |||
} | |||
} | |||
if (driverclassname.equals("COM.ibm.db2.jdbc.net.DB2Driver")) { | |||
if ((se.getSQLState() == "08S01") && (se.getErrorCode() == -99999)) { | |||
System.out.println("Connection to the DB2 server failed.\n"); | |||
System.out.println( | |||
"Unable to connect to //hostname:port specified in the DB URL."); | |||
System.out.println( | |||
"Verify that db2jstrt is running on the target host with the specified port as a parameter..."); | |||
network_connect_problem = true; | |||
} | |||
} | |||
if (network_connect_problem) { | |||
System.out.println( | |||
"Verify that the host and port that you are connecting to are correct."); | |||
System.out.println( | |||
"Also verify that the host you are connecting to is listening on the specified port."); | |||
System.out.println("Hint: use telnet hostname port."); | |||
System.out.println( | |||
"\tIf you get connection refused then the host is not listening on the specified port."); | |||
System.out.println( | |||
"\tIf telnet simply hangs then the host is listening on the port."); | |||
System.out.println(); | |||
} | |||
} // End catch connect exception | |||
} | |||
private Connection getDataSourceConnection(String userid, String password) { | |||
PooledConnection pooledConn = null; | |||
Connection conn = null; | |||
try { | |||
/*loader = Thread.currentThread().getContextClassLoader(); | |||
if (loader == null) | |||
loader = ClassLoader.getSystemClassLoader(); | |||
if (response.equals("10")) | |||
dsClass = | |||
loader.loadClass("com.merant.sequelink.jdbcx.datasource.SequeLinkDataSource"); | |||
else if (response.equals("11")) | |||
dsClass = | |||
loader.loadClass("com.ibm.websphere.jdbcx.sqlserver.SQLServerDataSource"); | |||
dsClass=loader.loadClass(driverclassname); | |||
*/ | |||
ds = (ConnectionPoolDataSource) (dsClass.newInstance()); | |||
System.out.println("enter database name:"); | |||
dbname = readLine(); | |||
dsClass.getMethod("setDatabaseName", new Class[] { String.class }).invoke( | |||
ds, | |||
new Object[] { dbname }); | |||
System.out.println("enter port number:"); | |||
dbport = readLine(); | |||
dsClass.getMethod("setPortNumber", new Class[] { int.class }).invoke( | |||
ds, | |||
new Object[] { new Integer(dbport)}); | |||
System.out.println("enter server name:"); | |||
dbhostname = readLine(); | |||
dsClass.getMethod("setServerName", new Class[] { String.class }).invoke( | |||
ds, | |||
new Object[] { dbhostname }); | |||
dsClass.getMethod("setUser", new Class[] { String.class }).invoke( | |||
ds, | |||
new Object[] { userid }); | |||
dsClass.getMethod("setPassword", new Class[] { String.class }).invoke( | |||
ds, | |||
new Object[] { password }); | |||
long start = System.currentTimeMillis(); | |||
pooledConn = ds.getPooledConnection(); | |||
conn = pooledConn.getConnection(); | |||
operationTimer = System.currentTimeMillis() - start; | |||
// Any use of the Connection must be done AFTER the unlock, or else it will fail | |||
// with a license verification error. | |||
} catch (SQLException se) { | |||
se.printStackTrace(); | |||
System.out.println("Error code is: " + se.getErrorCode()); | |||
System.out.println("SQLState is: " + se.getSQLState()); | |||
// See if we can help the user with diagnosing the problem: | |||
System.out.println( | |||
"Verify that the host and port that you are connecting to are correct."); | |||
System.out.println( | |||
"Also verify that the host you are connecting to is listening on the specified port."); | |||
System.out.println("Hint: use telnet hostname port."); | |||
System.out.println( | |||
"\tIf you get connection refused then the host is not listening on the specified port."); | |||
System.out.println( | |||
"\tIf telnet simply hangs then the host is listening on the port."); | |||
// System.out.println(); | |||
return (null); | |||
} // End catch connect exception | |||
catch (Throwable th) { | |||
th.printStackTrace(); | |||
return (null); | |||
} finally { | |||
// if (conn != null) try { conn.close(); } catch (Throwable th) {} | |||
// if (pooledConn != null) try { pooledConn.close(); } catch (Throwable th) {} | |||
} | |||
return (conn); | |||
} | |||
private Connection getDataSourceConnection() { | |||
PooledConnection pooledConn = null; | |||
Connection conn = null; | |||
System.out.println("getting data source connection..."); | |||
try { | |||
long start = System.currentTimeMillis(); | |||
pooledConn = ds.getPooledConnection(); | |||
conn = pooledConn.getConnection(); | |||
operationTimer = System.currentTimeMillis() - start; | |||
// Any use of the Connection must be done AFTER the unlock, or else it will fail | |||
// with a license verification error. | |||
} catch (SQLException se) { | |||
se.printStackTrace(); | |||
System.out.println("Error code is: " + se.getErrorCode()); | |||
System.out.println("SQLState is: " + se.getSQLState()); | |||
// See if we can help the user with diagnosing the problem: | |||
System.out.println( | |||
"Verify that the host and port that you are connecting to are correct."); | |||
System.out.println( | |||
"Also verify that the host you are connecting to is listening on the specified port."); | |||
System.out.println("Hint: use telnet hostname port."); | |||
System.out.println( | |||
"\tIf you get connection refused then the host is not listening on the specified port."); | |||
System.out.println( | |||
"\tIf telnet simply hangs then the host is listening on the port."); | |||
// System.out.println(); | |||
return (null); | |||
} // End catch connect exception | |||
catch (Throwable th) { | |||
th.printStackTrace(); | |||
return (null); | |||
} finally { | |||
// if (conn != null) try { conn.close(); } catch (Throwable th) {} | |||
// if (pooledConn != null) try { pooledConn.close(); } catch (Throwable th) {} | |||
} | |||
return (conn); | |||
} | |||
public String readLine() { | |||
String response = null; | |||
try { | |||
response = instream.readLine(); | |||
} catch (IOException e) { | |||
e.printStackTrace(); | |||
} | |||
return response; | |||
} | |||
public boolean process() { | |||
String instring = null; | |||
if (!(response.equals("11")) && !(response.equals("10"))) | |||
{ | |||
while (instring == null) { | |||
System.out.println( | |||
"Please enter sql statement to execute...(q to quit)\n(or maxconn to test maximum connections possible to this database)"); | |||
instring = readLine(); | |||
if (instring.equals("q")) { | |||
System.out.println("Ok, quitting!"); | |||
return false; | |||
} else | |||
if (instring.equals("maxconn")) { | |||
System.out.println("testing for maximum connections..."); | |||
maxconn(); | |||
return true; | |||
} | |||
} | |||
} | |||
else //special case with DataDirect driver, test connect only | |||
{ | |||
while ((instring == null) || (!instring.equals("q")) && (!instring.equals("maxconn"))) { | |||
System.out.println( | |||
"Please enter q to quit\n(or maxconn to test maximum connections possible to this database)"); | |||
instring = readLine(); | |||
} | |||
if (instring.equals("maxconn")) { | |||
System.out.println("testing for maximum connections..."); | |||
maxconn(); | |||
return true; | |||
} | |||
else | |||
if (instring.equals("q")) { | |||
System.out.println("Ok, quitting!"); | |||
return false; } | |||
else System.out.println("Jdbctest only supports connection testing for this driver."); | |||
} | |||
boolean rc = false; | |||
try { | |||
long start = System.currentTimeMillis(); | |||
rc = stmt.execute(instring); | |||
operationTimer = System.currentTimeMillis() - start; | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
} | |||
System.out.println( | |||
"Operation took " + operationTimer + " milliseconds to complete"); | |||
ResultSet rs = null; | |||
System.out.println( | |||
"Just tried " + rc + " = stmt.execute(\"" + instring + "\");"); | |||
if (rc) { | |||
try { | |||
System.out.println("Getting result set..."); | |||
rs = stmt.getResultSet(); | |||
ResultSetMetaData rsm = rs.getMetaData(); | |||
// Display names of columns fetched | |||
int colcount = rsm.getColumnCount(); | |||
System.out.println(colcount + " column(s) in result"); | |||
int[] coltype = new int[colcount + 1]; // Do not slot 0 | |||
for (int i = 1; i < colcount + 1; i++) { | |||
System.out.print(rsm.getColumnName(i) + " "); | |||
coltype[i] = rsm.getColumnType(i); | |||
} | |||
System.out.println(); | |||
System.out.println("-----------------------------------"); | |||
while (rs.next()) { | |||
for (int j = 1; j < colcount + 1; j++) { | |||
if (j != 1) | |||
System.out.print(","); | |||
switch (coltype[j]) { | |||
case Types.TINYINT : | |||
System.out.print("" + rs.getShort(j)); | |||
break; | |||
case Types.SMALLINT : | |||
System.out.print("" + rs.getShort(j)); | |||
break; | |||
case Types.INTEGER : | |||
System.out.print("" + rs.getInt(j)); | |||
break; | |||
case Types.BIGINT : | |||
System.out.print("" + rs.getLong(j)); | |||
break; | |||
case Types.FLOAT : | |||
System.out.print("" + rs.getFloat(j)); | |||
break; | |||
case Types.REAL : | |||
System.out.print("" + rs.getDouble(j)); | |||
break; | |||
case Types.DOUBLE : | |||
System.out.print("" + rs.getDouble(j)); | |||
break; | |||
case Types.NUMERIC : | |||
System.out.print("" + rs.getInt(j)); | |||
break; | |||
case Types.DECIMAL : | |||
System.out.print("" + rs.getInt(j)); | |||
break; | |||
case Types.CHAR : | |||
// System.out.print(""+rs.getByte(j)); | |||
System.out.print("" + rs.getString(j)); | |||
break; | |||
case Types.VARCHAR : | |||
System.out.print("" + rs.getString(j)); | |||
break; | |||
case Types.LONGVARCHAR : | |||
System.out.print("" + rs.getString(j)); | |||
break; | |||
case Types.DATE : | |||
System.out.print("" + rs.getDate(j)); | |||
break; | |||
case Types.TIME : | |||
System.out.print("" + rs.getTime(j)); | |||
break; | |||
case Types.TIMESTAMP : | |||
System.out.print("" + rs.getTimestamp(j)); | |||
break; | |||
case Types.BINARY : | |||
case Types.BIT : | |||
case Types.VARBINARY : | |||
case Types.LONGVARBINARY : | |||
byte b[] = rs.getBytes(j); | |||
for (int n = 0; n < b.length; n++) | |||
System.out.print("" + b[n] + "|"); | |||
break; | |||
case Types.NULL : | |||
System.out.print("-"); | |||
break; | |||
case Types.OTHER : | |||
System.out.print("OTHER"); | |||
break; | |||
default : | |||
System.out.print("UNKNOWN-TYPE"); | |||
} | |||
} | |||
System.out.println(); | |||
} | |||
System.out.println(); | |||
rs.close(); | |||
} catch (SQLException se) { | |||
se.printStackTrace(); | |||
System.out.println("Error code is: " + se.getErrorCode()); | |||
System.out.println("SQLState is: " + se.getSQLState()); | |||
} | |||
} | |||
return true; | |||
} | |||
String getPassword(String userid) { | |||
Frame f; | |||
Panel p; | |||
Label l; | |||
TextField tf; | |||
// Create the frame | |||
f = new Frame("Password Prompt for JDBC tester"); | |||
f.setLocation(400, 400); | |||
f.setSize(350, 100); | |||
// Reister ourselves for 'Close' events | |||
f.addWindowListener(new FrameCloser()); | |||
// Create the panel | |||
p = new Panel(); | |||
f.add(p, "Center"); | |||
l = new Label("Please enter password for Data Base user: " + userid); | |||
tf = new TextField(20); | |||
tf.setEchoChar('*'); | |||
p.add(l, "Center"); | |||
p.add(tf, "Center"); | |||
try { | |||
f.show(); | |||
} catch (Exception ex) { | |||
ex.printStackTrace(); | |||
System.out.println( | |||
"Your ===> DISPLAY <=== Environment Variable is not exported properly. Please correct and retry."); | |||
} | |||
try { | |||
Thread.sleep(1000); | |||
} catch (InterruptedException ie) { | |||
} | |||
f.show(); | |||
tf.requestFocus(); | |||
tf.addKeyListener(new KeyInterceptor()); | |||
// System.out.println("Waiting for password to be entered..."); | |||
synchronized (tf) { | |||
try { | |||
tf.wait(); | |||
} catch (InterruptedException e) { | |||
} | |||
} | |||
String password = tf.getText(); | |||
f.transferFocus(); | |||
f.dispose(); | |||
return password; | |||
} | |||
public void maxconn() { | |||
Connection c[] = new Connection[125]; | |||
System.out.println("1 connection assumed...looping..."); | |||
int i; | |||
for (i = 0; i < 125; i++) | |||
try { | |||
if (globaluid == null || globaluid.equals("")) { | |||
if (Integer.parseInt(response) < DATASOURCECONNECTIONS) | |||
{ | |||
long start = System.currentTimeMillis(); | |||
c[i] = DriverManager.getConnection(DBURL); | |||
operationTimer = System.currentTimeMillis() - start; | |||
} | |||
else c[i]= getDataSourceConnection(); | |||
} else { | |||
if (Integer.parseInt(response) < DATASOURCECONNECTIONS) | |||
{ | |||
long start = System.currentTimeMillis(); | |||
c[i] = DriverManager.getConnection(DBURL, globaluid, globalpwd); | |||
operationTimer = System.currentTimeMillis() - start; | |||
} | |||
else c[i]= getDataSourceConnection(); | |||
} | |||
System.out.println("Connection Successful: " + c[i]); | |||
System.out.println( | |||
"Connection " | |||
+ (i + 2) | |||
+ " took " | |||
+ operationTimer | |||
+ " milliseconds to complete"); | |||
} catch (SQLException se) { | |||
se.printStackTrace(); | |||
System.out.println("Error code is: " + se.getErrorCode()); | |||
System.out.println("SQLState is: " + se.getSQLState()); | |||
i--; | |||
break; | |||
} | |||
catch (Exception e) { | |||
System.out.println(e.getMessage()); | |||
e.printStackTrace(); | |||
i--; | |||
break; | |||
} | |||
System.out.println( | |||
"Maximum connections to DB:" + DBURL + " is " + (i + 2) + "."); | |||
System.out.println("closing all connections except initial connection..."); | |||
for (i = 0; i < 125; i++) | |||
if (c[i] != null) | |||
try { | |||
c[i].close(); | |||
System.out.print("."); | |||
} catch (SQLException se2) { | |||
se2.printStackTrace(); | |||
System.out.println("Error code is: " + se2.getErrorCode()); | |||
System.out.println("SQLState is: " + se2.getSQLState()); | |||
} | |||
System.out.println("Done!"); | |||
} | |||
} | |||
</pre> | |||
[[Category:Java]] | [[Category:Java]] | ||
[[Category:JDBC]] | [[Category:JDBC]] | ||
[[Category:Benchmarks]] | [[Category:Benchmarks]] | ||
Revision as of 18:48, 24 May 2008
Packaged Benchmark
See http://www.performiq.com.au/kb/images/JDBCBench.tar
JDBCTest
//
// DISCLAIMER OF WARRANTIES.
// The following [enclosed] code is sample code created by IBM
// Corporation. This sample code is not part of any standard or IBM
// product and is provided to you solely for the purpose of assisting
// you in the development of your applications. The code is provided
// "AS IS". IBM MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE, REGARDING THE FUNCTION OR PERFORMANCE OF
// THIS CODE. THIS CODE MAY CONTAIN ERRORS. IBM shall not be liable
// for any damages arising out of your use of the sample code, even
// if it has been advised of the possibility of such damages.
//
import java.sql.*;
import javax.sql.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class jdbctest {
public String driverclassname;
public String DBURL;
public String dbprefix = "jdbc:";
public Connection con;
public Statement stmt;
public BufferedReader instream;
public long operationTimer;
public String response = "0";
public String globaluid = null;
public String globalpwd = null;
public String dbhostname;
public String dbport;
public String dbname;
public ClassLoader loader=null;
public Class dsClass=null;
ConnectionPoolDataSource ds=null;
public static final int DATASOURCECONNECTIONS=10;
// Capture window events...
static private class FrameCloser extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.out.println("windowClosing..." + we);
we.getWindow().dispose();
System.exit(0);
}
}
// Capture key events...
static private class KeyInterceptor implements KeyListener {
public void keyTyped(java.awt.event.KeyEvent ke) {
}
public void keyPressed(java.awt.event.KeyEvent ke) {
}
public void keyReleased(java.awt.event.KeyEvent ke) {
// System.out.println("keyReleased..." + ke);
if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
TextField tf = (TextField) ke.getComponent();
synchronized (tf) {
tf.notify();
}
} // if enter key is pressed
}
}
public static void main(String args[]) {
System.out.println("JDBC Test starting...");
jdbctest ct = new jdbctest();
ct.init(args); // Loads jdbc driver
ct.connect(); // sets connection
if (ct.con == null) {
System.out.println("Connection to " + ct.DBURL + " failed!");
System.exit(33);
}
System.out.println("Connection Successful: " + ct.con);
System.out.println(
"Connection took " + ct.operationTimer + " milliseconds to complete");
try {
System.out.println("AutoCommit is: " + ct.con.getAutoCommit());
} catch (SQLException s) {
s.printStackTrace();
System.out.println("Error code is: " + s.getErrorCode());
System.out.println("SQLState is: " + s.getSQLState());
System.exit(33);
}
do {
try {
if (!(ct.response.equals("11")) && !(ct.response.equals("10")))
{System.out.println("Create new statement...");
ct.stmt = ct.con.createStatement();}
} catch (SQLException se) {
se.printStackTrace();
System.out.println("Error code is: " + se.getErrorCode());
System.out.println("SQLState is: " + se.getSQLState());
System.exit(33);
}
} while (ct.process());
try {
if (ct.stmt != null) ct.stmt.close();
ct.con.close();
} catch (Exception e) {
e.printStackTrace();
}
// System.exit ???
System.exit(33);
}
public void init(String args[]) {
instream = new BufferedReader((new InputStreamReader(System.in)));
while (driverclassname == null) {
System.out.println(
"Please respond:\n\t1 - For DB2\n\t2 - For DB2/Pure Network Client\n\t3 - For Oracle (thin) \n\t4 - For Oracle (oci8)\n\t5 - For Informix\n\t6 - For Sybase\n\t7 - For Cloudscape - (Local)\n\t8 - For Cloudscape - (RMI)\n\t9 - For SQLServer (Microsoft Driver)\n\t10 - For SQLServer (SequeLink driver)\n\t11 - For SQLServer (WebSphere embedded Connect JDBC driver)\n\t12 - For SQLServer(Data Direct Technologies Connect JDBC driver)");
response = readLine();
if (response.equals("1")) {
driverclassname = "COM.ibm.db2.jdbc.app.DB2Driver";
dbprefix += "db2:";
} else
if (response.equals("2")) {
driverclassname = "COM.ibm.db2.jdbc.net.DB2Driver";
dbprefix += "db2:";
} else
if (response.equals("3")) { //Thin Driver
driverclassname = "oracle.jdbc.driver.OracleDriver";
dbprefix += "oracle:thin:";
} else
if (response.equals("4")) { //Thick Driver
driverclassname = "oracle.jdbc.driver.OracleDriver";
dbprefix += "oracle:oci8:";
} else
if (response.equals("5")) {
driverclassname = "com.informix.jdbc.IfxDriver";
dbprefix += "informix-sqli:";
} else
if (response.equals("6")) {
driverclassname = "com.sybase.jdbc2.jdbc.SybDriver";
dbprefix += "sybase:";
} else
if (response.equals("7")) {
driverclassname = "COM.cloudscape.core.JDBCDriver";
dbprefix += "cloudscape:";
} else
if (response.equals("8")) {
driverclassname = "COM.cloudscape.core.RmiJdbcDriver";
dbprefix += "cloudscape:rmi:";
} else
if (response.equals("9")) {
driverclassname = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
dbprefix += "microsoft:sqlserver:";
} else
if (response.equals("10")) {
// driverclassname = "com.merant.sequelink.jdbcx.datasource.SequeLinkDataSource";
driverclassname = "com.ddtek.jdbcx.sequelink.SequeLinkDataSource";
dbprefix += "sequelink:";
} else
if (response.equals("11")) {
driverclassname = "com.ibm.websphere.jdbcx.sqlserver.SQLServerDataSource";
dbprefix += "sequelink:";
} else
if (response.equals("12")) {
driverclassname = "com.ddtek.jdbcx.sqlserver.SQLServerDataSource";
dbprefix += "sequelink:";
} else
System.out.println("Invalid selection: specify an option 1-12.");
}
System.out.println("Loading jdbc driver: " + driverclassname);
try {
if (Integer.parseInt(response) < DATASOURCECONNECTIONS)
{
Class.forName(driverclassname);
System.out.println(driverclassname + " was loaded successfully");
}
else
{loader = Thread.currentThread().getContextClassLoader();
if (loader == null)
loader = ClassLoader.getSystemClassLoader();
dsClass=loader.loadClass(driverclassname);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println(
"Please modify you classpath to include the class: " + driverclassname);
System.out.println(
"To be sure that you have this class in your classpath, issue:\n javap "
+ driverclassname);
System.exit(33);
}
}
public void connect() {
while ((DBURL == null) && (Integer.parseInt(response) < DATASOURCECONNECTIONS)) {
System.out.println("Please enter connection URL info, e.g:");
if (driverclassname.endsWith(".app.DB2Driver")) {
System.out.println("jdbc:db2:dbname or dbname");
} else
if (driverclassname.endsWith(".net.DB2Driver")) {
System.out.println(
"jdbc:db2://<serverName>:<port>/<dbname> or //<serverName>:<port>/<dbName>");
} else
if (driverclassname.endsWith(".OracleDriver")) {
if (response.equals("4")) {
System.out.println(
"jdbc:oracle:oci8:@<hostname>:<port>:<dbname> or @<hostname>:<port>:<dbname>");
} else {
System.out.println(
"jdbc:oracle:thin:@<hostname>:<port>:<dbname> or @<hostname>:<port>:<dbname>");
}
} else
if (driverclassname.endsWith(".IfxDriver"))
System.out.println(
"jdbc:informix-sqli://<hostname>:<port>/<dbname>:INFORMIXSERVER=<ifxservername>");
else
if (driverclassname.endsWith(".SybDriver"))
System.out.println("jdbc:sybase:<dbProtocol>:<hostname>:<port>/<dbname>");
else
if (driverclassname.endsWith(".SQLServerDriver"))
System.out.println("jdbc:microsoft:sqlserver://<hostname>:<port>;DatabaseName=<dbname>");
else
if (driverclassname.endsWith(".JDBCDriver"))
System.out.println("jdbc:cloudscape:<dbname>;create=<true|false>");
else
if (driverclassname.endsWith(".RmiJdbcDriver"))
System.out.println("jdbc:cloudscape:rmi://<hostname>:<rmi port>/<dbname> or //<hostname>:<rmi port>/<dbname");
if (!(driverclassname.endsWith("SequeLinkDriver")))
DBURL = readLine();
else
DBURL = "";
}
if (DBURL==null) DBURL="";
if (!DBURL.startsWith(dbprefix))
DBURL = dbprefix + DBURL;
String userid = null;
{
if (Integer.parseInt(response) < 10)
System.out.println("Please enter userid for connection to " + DBURL);
else if (Integer.parseInt(response) < 13)
System.out.println("Please enter userid for connection to Microsoft SQL Server:");
userid = readLine();
System.out.println("userid is: '" + userid + "'");
}
String password = null;
if (userid != null && !userid.equals("")) {
System.out.println(
"Please enter password "
+ " =====> WARNING: PASSWORD NOT HIDDEN <====== ");
System.out.println(
"enter 'gui' instead of you password for a secure GUI prompt)");
password = readLine();
if (password.equalsIgnoreCase("gui"))
password = getPassword(userid);
}
globaluid = userid;
globalpwd = password;
try {
//per L3, DataSource approach is used with WS 4.x, so let's do it the same way
if (Integer.parseInt(response) >= DATASOURCECONNECTIONS) {
con = this.getDataSourceConnection(userid, password);
} else { //non-SQLServer
if (userid == null || userid.equals("")) {
long start = System.currentTimeMillis();
con = DriverManager.getConnection(DBURL);
operationTimer = System.currentTimeMillis() - start;
} else {
long start = System.currentTimeMillis();
con = DriverManager.getConnection(DBURL, userid, password);
operationTimer = System.currentTimeMillis() - start;
}
}
} catch (SQLException se) {
se.printStackTrace();
System.out.println("Error code is: " + se.getErrorCode());
System.out.println("SQLState is: " + se.getSQLState());
// See if we can help the user with diagnosing the problem:
boolean network_connect_problem = false;
if (driverclassname.equals("oracle.jdbc.driver.OracleDriver")) {
if ((se.getSQLState() == null) && (se.getErrorCode() == 17002)) {
System.out.println("Connection to the Oracle server failed.\n");
System.out.println(
"Unable to connect to @hostname:port specified in the DB URL.");
network_connect_problem = true;
}
}
if (driverclassname.equals("COM.ibm.db2.jdbc.net.DB2Driver")) {
if ((se.getSQLState() == "08S01") && (se.getErrorCode() == -99999)) {
System.out.println("Connection to the DB2 server failed.\n");
System.out.println(
"Unable to connect to //hostname:port specified in the DB URL.");
System.out.println(
"Verify that db2jstrt is running on the target host with the specified port as a parameter...");
network_connect_problem = true;
}
}
if (network_connect_problem) {
System.out.println(
"Verify that the host and port that you are connecting to are correct.");
System.out.println(
"Also verify that the host you are connecting to is listening on the specified port.");
System.out.println("Hint: use telnet hostname port.");
System.out.println(
"\tIf you get connection refused then the host is not listening on the specified port.");
System.out.println(
"\tIf telnet simply hangs then the host is listening on the port.");
System.out.println();
}
} // End catch connect exception
}
private Connection getDataSourceConnection(String userid, String password) {
PooledConnection pooledConn = null;
Connection conn = null;
try {
/*loader = Thread.currentThread().getContextClassLoader();
if (loader == null)
loader = ClassLoader.getSystemClassLoader();
if (response.equals("10"))
dsClass =
loader.loadClass("com.merant.sequelink.jdbcx.datasource.SequeLinkDataSource");
else if (response.equals("11"))
dsClass =
loader.loadClass("com.ibm.websphere.jdbcx.sqlserver.SQLServerDataSource");
dsClass=loader.loadClass(driverclassname);
*/
ds = (ConnectionPoolDataSource) (dsClass.newInstance());
System.out.println("enter database name:");
dbname = readLine();
dsClass.getMethod("setDatabaseName", new Class[] { String.class }).invoke(
ds,
new Object[] { dbname });
System.out.println("enter port number:");
dbport = readLine();
dsClass.getMethod("setPortNumber", new Class[] { int.class }).invoke(
ds,
new Object[] { new Integer(dbport)});
System.out.println("enter server name:");
dbhostname = readLine();
dsClass.getMethod("setServerName", new Class[] { String.class }).invoke(
ds,
new Object[] { dbhostname });
dsClass.getMethod("setUser", new Class[] { String.class }).invoke(
ds,
new Object[] { userid });
dsClass.getMethod("setPassword", new Class[] { String.class }).invoke(
ds,
new Object[] { password });
long start = System.currentTimeMillis();
pooledConn = ds.getPooledConnection();
conn = pooledConn.getConnection();
operationTimer = System.currentTimeMillis() - start;
// Any use of the Connection must be done AFTER the unlock, or else it will fail
// with a license verification error.
} catch (SQLException se) {
se.printStackTrace();
System.out.println("Error code is: " + se.getErrorCode());
System.out.println("SQLState is: " + se.getSQLState());
// See if we can help the user with diagnosing the problem:
System.out.println(
"Verify that the host and port that you are connecting to are correct.");
System.out.println(
"Also verify that the host you are connecting to is listening on the specified port.");
System.out.println("Hint: use telnet hostname port.");
System.out.println(
"\tIf you get connection refused then the host is not listening on the specified port.");
System.out.println(
"\tIf telnet simply hangs then the host is listening on the port.");
// System.out.println();
return (null);
} // End catch connect exception
catch (Throwable th) {
th.printStackTrace();
return (null);
} finally {
// if (conn != null) try { conn.close(); } catch (Throwable th) {}
// if (pooledConn != null) try { pooledConn.close(); } catch (Throwable th) {}
}
return (conn);
}
private Connection getDataSourceConnection() {
PooledConnection pooledConn = null;
Connection conn = null;
System.out.println("getting data source connection...");
try {
long start = System.currentTimeMillis();
pooledConn = ds.getPooledConnection();
conn = pooledConn.getConnection();
operationTimer = System.currentTimeMillis() - start;
// Any use of the Connection must be done AFTER the unlock, or else it will fail
// with a license verification error.
} catch (SQLException se) {
se.printStackTrace();
System.out.println("Error code is: " + se.getErrorCode());
System.out.println("SQLState is: " + se.getSQLState());
// See if we can help the user with diagnosing the problem:
System.out.println(
"Verify that the host and port that you are connecting to are correct.");
System.out.println(
"Also verify that the host you are connecting to is listening on the specified port.");
System.out.println("Hint: use telnet hostname port.");
System.out.println(
"\tIf you get connection refused then the host is not listening on the specified port.");
System.out.println(
"\tIf telnet simply hangs then the host is listening on the port.");
// System.out.println();
return (null);
} // End catch connect exception
catch (Throwable th) {
th.printStackTrace();
return (null);
} finally {
// if (conn != null) try { conn.close(); } catch (Throwable th) {}
// if (pooledConn != null) try { pooledConn.close(); } catch (Throwable th) {}
}
return (conn);
}
public String readLine() {
String response = null;
try {
response = instream.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
public boolean process() {
String instring = null;
if (!(response.equals("11")) && !(response.equals("10")))
{
while (instring == null) {
System.out.println(
"Please enter sql statement to execute...(q to quit)\n(or maxconn to test maximum connections possible to this database)");
instring = readLine();
if (instring.equals("q")) {
System.out.println("Ok, quitting!");
return false;
} else
if (instring.equals("maxconn")) {
System.out.println("testing for maximum connections...");
maxconn();
return true;
}
}
}
else //special case with DataDirect driver, test connect only
{
while ((instring == null) || (!instring.equals("q")) && (!instring.equals("maxconn"))) {
System.out.println(
"Please enter q to quit\n(or maxconn to test maximum connections possible to this database)");
instring = readLine();
}
if (instring.equals("maxconn")) {
System.out.println("testing for maximum connections...");
maxconn();
return true;
}
else
if (instring.equals("q")) {
System.out.println("Ok, quitting!");
return false; }
else System.out.println("Jdbctest only supports connection testing for this driver.");
}
boolean rc = false;
try {
long start = System.currentTimeMillis();
rc = stmt.execute(instring);
operationTimer = System.currentTimeMillis() - start;
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(
"Operation took " + operationTimer + " milliseconds to complete");
ResultSet rs = null;
System.out.println(
"Just tried " + rc + " = stmt.execute(\"" + instring + "\");");
if (rc) {
try {
System.out.println("Getting result set...");
rs = stmt.getResultSet();
ResultSetMetaData rsm = rs.getMetaData();
// Display names of columns fetched
int colcount = rsm.getColumnCount();
System.out.println(colcount + " column(s) in result");
int[] coltype = new int[colcount + 1]; // Do not slot 0
for (int i = 1; i < colcount + 1; i++) {
System.out.print(rsm.getColumnName(i) + " ");
coltype[i] = rsm.getColumnType(i);
}
System.out.println();
System.out.println("-----------------------------------");
while (rs.next()) {
for (int j = 1; j < colcount + 1; j++) {
if (j != 1)
System.out.print(",");
switch (coltype[j]) {
case Types.TINYINT :
System.out.print("" + rs.getShort(j));
break;
case Types.SMALLINT :
System.out.print("" + rs.getShort(j));
break;
case Types.INTEGER :
System.out.print("" + rs.getInt(j));
break;
case Types.BIGINT :
System.out.print("" + rs.getLong(j));
break;
case Types.FLOAT :
System.out.print("" + rs.getFloat(j));
break;
case Types.REAL :
System.out.print("" + rs.getDouble(j));
break;
case Types.DOUBLE :
System.out.print("" + rs.getDouble(j));
break;
case Types.NUMERIC :
System.out.print("" + rs.getInt(j));
break;
case Types.DECIMAL :
System.out.print("" + rs.getInt(j));
break;
case Types.CHAR :
// System.out.print(""+rs.getByte(j));
System.out.print("" + rs.getString(j));
break;
case Types.VARCHAR :
System.out.print("" + rs.getString(j));
break;
case Types.LONGVARCHAR :
System.out.print("" + rs.getString(j));
break;
case Types.DATE :
System.out.print("" + rs.getDate(j));
break;
case Types.TIME :
System.out.print("" + rs.getTime(j));
break;
case Types.TIMESTAMP :
System.out.print("" + rs.getTimestamp(j));
break;
case Types.BINARY :
case Types.BIT :
case Types.VARBINARY :
case Types.LONGVARBINARY :
byte b[] = rs.getBytes(j);
for (int n = 0; n < b.length; n++)
System.out.print("" + b[n] + "|");
break;
case Types.NULL :
System.out.print("-");
break;
case Types.OTHER :
System.out.print("OTHER");
break;
default :
System.out.print("UNKNOWN-TYPE");
}
}
System.out.println();
}
System.out.println();
rs.close();
} catch (SQLException se) {
se.printStackTrace();
System.out.println("Error code is: " + se.getErrorCode());
System.out.println("SQLState is: " + se.getSQLState());
}
}
return true;
}
String getPassword(String userid) {
Frame f;
Panel p;
Label l;
TextField tf;
// Create the frame
f = new Frame("Password Prompt for JDBC tester");
f.setLocation(400, 400);
f.setSize(350, 100);
// Reister ourselves for 'Close' events
f.addWindowListener(new FrameCloser());
// Create the panel
p = new Panel();
f.add(p, "Center");
l = new Label("Please enter password for Data Base user: " + userid);
tf = new TextField(20);
tf.setEchoChar('*');
p.add(l, "Center");
p.add(tf, "Center");
try {
f.show();
} catch (Exception ex) {
ex.printStackTrace();
System.out.println(
"Your ===> DISPLAY <=== Environment Variable is not exported properly. Please correct and retry.");
}
try {
Thread.sleep(1000);
} catch (InterruptedException ie) {
}
f.show();
tf.requestFocus();
tf.addKeyListener(new KeyInterceptor());
// System.out.println("Waiting for password to be entered...");
synchronized (tf) {
try {
tf.wait();
} catch (InterruptedException e) {
}
}
String password = tf.getText();
f.transferFocus();
f.dispose();
return password;
}
public void maxconn() {
Connection c[] = new Connection[125];
System.out.println("1 connection assumed...looping...");
int i;
for (i = 0; i < 125; i++)
try {
if (globaluid == null || globaluid.equals("")) {
if (Integer.parseInt(response) < DATASOURCECONNECTIONS)
{
long start = System.currentTimeMillis();
c[i] = DriverManager.getConnection(DBURL);
operationTimer = System.currentTimeMillis() - start;
}
else c[i]= getDataSourceConnection();
} else {
if (Integer.parseInt(response) < DATASOURCECONNECTIONS)
{
long start = System.currentTimeMillis();
c[i] = DriverManager.getConnection(DBURL, globaluid, globalpwd);
operationTimer = System.currentTimeMillis() - start;
}
else c[i]= getDataSourceConnection();
}
System.out.println("Connection Successful: " + c[i]);
System.out.println(
"Connection "
+ (i + 2)
+ " took "
+ operationTimer
+ " milliseconds to complete");
} catch (SQLException se) {
se.printStackTrace();
System.out.println("Error code is: " + se.getErrorCode());
System.out.println("SQLState is: " + se.getSQLState());
i--;
break;
}
catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
i--;
break;
}
System.out.println(
"Maximum connections to DB:" + DBURL + " is " + (i + 2) + ".");
System.out.println("closing all connections except initial connection...");
for (i = 0; i < 125; i++)
if (c[i] != null)
try {
c[i].close();
System.out.print(".");
} catch (SQLException se2) {
se2.printStackTrace();
System.out.println("Error code is: " + se2.getErrorCode());
System.out.println("SQLState is: " + se2.getSQLState());
}
System.out.println("Done!");
}
}