|
I recommend a little known but very nice driver by
InfoZoom http://www.infozoom.de/
Tom Schaefer
Tecolote Research, Inc.
Test it with:
==============================================================
import java.sql.*;
import javax.sql.*; import javax.naming.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.text.*; import java.util.StringTokenizer; public class DbTest extends
HttpServlet
{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { Connection dbCon = null; NumberFormat numberFormatter; numberFormatter = NumberFormat.getNumberInstance(); numberFormatter.setMaximumFractionDigits(2); PrintWriter out = response.getWriter(); response.setContentType("text/html"); out.println("<html><head><title>Database Test</title>"); out.println("</head><body>"); out.println("<h2>JDBC and Database Information</h2><br>"); try { InitialContext ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/ONRPET"); try { dbCon = ds.getConnection(); } catch(Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } DatabaseMetaData dbmd = dbCon.getMetaData(); out.println("<p>Driver Name: " + dbmd.getDriverName() +"</p>"); out.println("<p>Database Product: " + dbmd.getDatabaseProductName()+"</p>"); StringTokenizer st = new StringTokenizer(dbmd.getSQLKeywords(), ","); out.println("<p><table border=1 cellpadding=2 align=left><th colspan=6>SQL Keywords Supported</th>"); int i=0; while(st.hasMoreTokens()) { if(i++ %6==0) out.println("<tr>"); out.println("<td> " + st.nextToken()+"</td>"); if(i%6==0) out.println("</tr>"); } if(i%6 != 0) out.println("</tr>"); out.println("</table></p><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>"); // Get a ResultSet that contains all of the tables in this database // We specify a table_type of "TABLE" to prevent seeing system tables, // views and so forth String[] tableTypes = { "TABLE" }; ResultSet allTables = dbmd.getTables(null,null,null,tableTypes); while(allTables.next()) { out.println("<p><hr></p>"); String table_name = allTables.getString("TABLE_NAME"); out.println("<p><h3>Table Name: " + table_name+"</h3></p>"); out.println("<p>Table Type: " + allTables.getString("TABLE_TYPE")+"</p>"); out.println("<h4>Indexes: </h4>");
// Get a list of all the indexes for this
table
ResultSet indexList = dbmd.getIndexInfo(null,null,table_name,false,false);
while(indexList.next())
{ out.println("<p> Index Name: "+indexList.getString("INDEX_NAME")+"</p>"); out.println("<p> Column Name:"+indexList.getString("COLUMN_NAME")+"</p>"); } indexList.close(); } allTables.close(); out.println("<hr>"); out.println("<p><h3>Transaction Support</h3><p>"); out.println("<p>Default Transaction Isolation: " + dbmd.getDefaultTransactionIsolation() +"</p>"); out.println("<p>Supports Transactions?: " + dbmd.supportsTransactions() +"</p>"); if(dbmd.supportsTransactions()) { out.println("<p>Supports Transaction Level 1 TRANSACTION_READ_UNCOMMITTED: " + dbmd.supportsTransactionIsolationLevel(dbCon.TRANSACTION_READ_UNCOMMITTED) +"</p>"); out.println("<p>Supports Transaction Level 2 TRANSACTION_READ_COMMITTED: " + dbmd.supportsTransactionIsolationLevel(dbCon.TRANSACTION_READ_COMMITTED) +"</p>"); out.println("<p>Supports Transaction Level 3 TRANSACTION_REPEATABLE_READ: " + dbmd.supportsTransactionIsolationLevel(dbCon.TRANSACTION_REPEATABLE_READ) +"</p>"); out.println("<p>Supports Transaction Level 4 TRANSACTION_SERIALIZABLE: " + dbmd.supportsTransactionIsolationLevel(dbCon.TRANSACTION_SERIALIZABLE) +"</p>"); out.println("<p>Supports Both Data Definition and Manipulation Transactions?: " + dbmd.supportsDataDefinitionAndDataManipulationTransactions() +"</p>"); } dbCon.close(); } //Out try catch(SQLException e) { out.println("<p><em>SQL Exception: " + e.getMessage()+"</em></p>"); } catch(Exception e) { out.println("<p><em>Had trouble getting database information: "+ e.getMessage() +"</em></p>"); e.printStackTrace(); } finally { try { if(dbCon != null) dbCon.close(); } catch(SQLException e) { out.println("<p><em>Had trouble getting database information: "+e.getMessage()+"</em></p>"); e.printStackTrace(); } } out.println("</body></html>"); } //out doGet }//out dbTest =======================================================================================
Here is sample output:
JDBC and Database InformationDriver Name: infoZoom JDBC-ADO Bridge (SQLOLEDB.1) Database Product: Microsoft SQL Server
Transaction Support
Default Transaction Isolation: 0 Supports Transactions?: true Supports Transaction Level 1 TRANSACTION_READ_UNCOMMITTED: true Supports Transaction Level 2 TRANSACTION_READ_COMMITTED: true Supports Transaction Level 3 TRANSACTION_REPEATABLE_READ: true Supports Transaction Level 4 TRANSACTION_SERIALIZABLE: true Supports Both Data Definition and Manipulation Transactions?: true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BEGIN:VCARD VERSION:2.1 N:Schaefer;Thomas;Mark;Mr. FN:Thomas Mark Schaefer NICKNAME:Tom ORG:Tecolote Research, Inc.;Modeling and Tools TITLE:Senior Technical Expert TEL;WORK;VOICE:(703) 414-3290 x142 TEL;HOME;VOICE:(703) 580-5514 ADR;WORK:;Wasgington DC;;Arlington;VA;22202;USA LABEL;WORK;ENCODING=QUOTED-PRINTABLE:Wasgington DC=0D=0AArlington, VA 22202=0D=0AUSA ADR;HOME:;;3832 Koval Lane;Lake Ridge;Va;22192;USA LABEL;HOME;ENCODING=QUOTED-PRINTABLE:3832 Koval Lane=0D=0ALake Ridge, Va 22192=0D=0AUSA X-WAB-GENDER:1 URL: URL:http://www.tecolote.com BDAY:20010218 KEY;X509;ENCODING=BASE64: MIIEjDCCA/WgAwIBAgIQAjeEv3MNFOL32JCPbSltQjANBgkqhkiG9w0BAQQFADCBzDEXMBUG A1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsx RjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9SUEEgSW5jb3JwLiBCeSBS ZWYuLExJQUIuTFREKGMpOTgxSDBGBgNVBAMTP1ZlcmlTaWduIENsYXNzIDEgQ0EgSW5kaXZp ZHVhbCBTdWJzY3JpYmVyLVBlcnNvbmEgTm90IFZhbGlkYXRlZDAeFw0wMDEyMDUwMDAwMDBa Fw0wMTEyMDUyMzU5NTlaMIIBEDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsT FlZlcmlTaWduIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5jb20vcmVw b3NpdG9yeS9SUEEgSW5jb3JwLiBieSBSZWYuLExJQUIuTFREKGMpOTgxHjAcBgNVBAsTFVBl cnNvbmEgTm90IFZhbGlkYXRlZDE0MDIGA1UECxMrRGlnaXRhbCBJRCBDbGFzcyAxIC0gTWlj cm9zb2Z0IEZ1bGwgU2VydmljZTEYMBYGA1UEAxQPVGhvbWFzIFNjaGFlZmVyMRwwGgYJKoZI hvcNAQkBFg10YWFhQGhvbWUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOD8xx sjIe9tV1Tefas4JqDeSP0Rbf1Xq8QblSgmiUsRdyhAGyRHJvzjX/V/4ziZyLOABkjFVpWx6/ KnPWNDV5NHiN29Q6RNk1HsTtDNdgoHVbNePGrNw8u2IJQ1g2H+xO91G4HinKrOx46hNpsITf EaGGlGt6fEHeK9mzEWUIZQIDAQABo4IBJjCCASIwCQYDVR0TBAIwADBEBgNVHSAEPTA7MDkG C2CGSAGG+EUBBwEIMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9y cGEwEQYJYIZIAYb4QgEBBAQDAgeAMIGGBgpghkgBhvhFAQYDBHgWdmQ0NjUyYmQ2M2YyMDQ3 MDI5Mjk4NzYzYzlkMmYyNzUwNjljNzM1OWJlZDFiMDU5ZGE3NWJjNGJjOTcwMTc0N2RhNWQz ZjIxNDFiZWFkYjJiZDJlODkyMTRhZjZhZjhkNTExNDg5Y2EzYjk0NGZkZjNlYTQ1MGQwMwYD VR0fBCwwKjAooCagJIYiaHR0cDovL2NybC52ZXJpc2lnbi5jb20vY2xhc3MxLmNybDANBgkq hkiG9w0BAQQFAAOBgQCxVCysLnfaGAfj+eqUj77mfa62MNyDzUdGjMSf6BeqxLf2uCdpVTYs e1BQMHBWl/sbst8JLag7kwuI0IxSe32JygFrpgqBN20GL1yKS5K+RUzYGRPaRbp1yGkU9hAI h4DnigUgunsmds4UvQuzIB2qKONmj82rQy/E6R1heajRCg== EMAIL;PREF;INTERNET:[EMAIL PROTECTED] REV:20010221T040813Z END:VCARD
