/* 
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002. 
 * All rights reserved. Software written by Ian F. Darwin and others. 
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $ 
 * 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions 
 * are met: 
 * 1. Redistributions of source code must retain the above copyright 
 *    notice, this list of conditions and the following disclaimer. 
 * 2. Redistributions in binary form must reproduce the above copyright 
 *    notice, this list of conditions and the following disclaimer in the 
 *    documentation and/or other materials provided with the distribution. 
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' 
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS 
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
 * POSSIBILITY OF SUCH DAMAGE. 
 *  
 * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee 
 * cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's, 
 * pioneering role in inventing and promulgating (and standardizing) the Java  
 * language and environment is gratefully acknowledged. 
 *  
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for 
 * inventing predecessor languages C and C++ is also gratefully acknowledged. 
 */ 
 
import java.sql.Connection; 
import java.sql.DatabaseMetaData; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
 
/** 
 * A database MetaData query 
 *  
 * @version $Id: JDBCMeta.java,v 1.7 2004/03/09 04:27:42 ian Exp $ 
 */ 
public class JDBCMeta { 
 
  public static void main(String[] av) { 
    int i; 
    try { 
         // Load the driver 
      Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); 
 
      // Enable logging 
      // DriverManager.setLogStream(System.err); 
 
      System.out.println("Getting Connection"); 
      Connection conn = DriverManager.getConnection ( 
        "jdbc:odbc:Companies", 
        "ian", "");  // user, passwd 
 
      // Get a Database MetaData as a way of interrogating 
      // the names of the tables in this database. 
      DatabaseMetaData meta = conn.getMetaData(); 
 
      System.out.println("We are using " + meta.getDatabaseProductName()); 
      System.out 
          .println("Version is " + meta.getDatabaseProductVersion()); 
 
      int txisolation = meta.getDefaultTransactionIsolation(); 
      System.out.println("Database default transaction isolation is " 
          + txisolation + " (" 
          + transactionIsolationToString(txisolation) + ")."); 
 
      conn.close(); 
 
      System.out.println("All done!"); 
 
    }  catch (ClassNotFoundException e) { 
      System.out.println("Can't load driver " + e); 
    } catch (SQLException ex) { 
      System.out.println("Database access failed:"); 
      System.out.println(ex); 
    } 
  } 
 
  /** 
   * Convert a TransactionIsolation int (defined in java.sql.Connection) to 
   * the corresponding printable string. 
   */ 
  public static String transactionIsolationToString(int txisolation) { 
    switch (txisolation) { 
    case Connection.TRANSACTION_NONE: 
      // transactions not supported. 
      return "TRANSACTION_NONE"; 
    case Connection.TRANSACTION_READ_UNCOMMITTED: 
      // All three phenomena can occur 
      return "TRANSACTION_NONE"; 
    case Connection.TRANSACTION_READ_COMMITTED: 
      // Dirty reads are prevented; non-repeatable reads and 
      // phantom reads can occur. 
      return "TRANSACTION_READ_COMMITTED"; 
    case Connection.TRANSACTION_REPEATABLE_READ: 
      // Dirty reads and non-repeatable reads are prevented; 
      // phantom reads can occur. 
      return "TRANSACTION_REPEATABLE_READ"; 
    case Connection.TRANSACTION_SERIALIZABLE: 
      // All three phenomena prvented; slowest! 
      return "TRANSACTION_SERIALIZABLE"; 
    default: 
      throw new IllegalArgumentException(txisolation 
          + " not a valid TX_ISOLATION"); 
    } 
  } 
} 
 
 
            
          
     
  
  |