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 Information


Driver Name: infoZoom JDBC-ADO Bridge (SQLOLEDB.1)

Database Product: Microsoft SQL Server

SQL Keywords Supported
BULK BREAK BROWSE BULK CHECKPOINT CLUSTERED
COMMITTED COMPUTE CONFIRM CONTROLROW DATABASE DBCC
DENY DISK DISTRIBUTED DUMMY DUMP ERRLVL
ERROREXIT EXIT FILLFACTOR FLOPPY HOLDLOCK IDENTITY_INSERT
IDENTITYCOL IF INDEX KILL LINENO LOAD
LOG MIRROREXIT NOCHECK NONCLUSTERED OFF OFFSETS
ONCE OVER PERCENT PERM PERMANENT PIPE
PLAN PRINT PROC PROCESSEXIT RAISERROR READTEXT
RECONFIGURE REPEATABLE REPLICATION RETURN ROWCOUNT RULE
SAVE SERIALIZABLE SETUSER SHUTDOWN STATISTICS TAPE
TEMP TEXTSIZE TOP TRAN TRUNCATE TSEQUAL
UNCOMMITTED UPDATETEXT USE WAITFOR WHILE WRITETEXT























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

Reply via email to