Java Tutorial/Database/Driver

Материал из Java эксперт
Перейти к: навигация, поиск

A List of JDBC Drivers: connection string, driver name

   <source lang="java">

IBM DB2 jdbc:db2://<HOST>:<PORT>/<DB> COM.ibm.db2.jdbc.app.DB2Driver JDBC-ODBC Bridge jdbc:odbc:<DB> sun.jdbc.odbc.JdbcOdbcDriver Microsoft SQL Server jdbc:weblogic:mssqlserver4:<DB>@<HOST>:<PORT> weblogic.jdbc.mssqlserver4.Driver Oracle Thin jdbc:oracle:thin:@<HOST>:<PORT>:<SID> oracle.jdbc.driver.OracleDriver PointBase Embedded Server jdbc:pointbase://embedded[:<PORT>]/<DB> com.pointbase.jdbc.jdbcUniversalDriver Cloudscape jdbc:cloudscape:<DB> COM.cloudscape.core.JDBCDriver Cloudscape RMI jdbc:rmi://<HOST>:<PORT>/jdbc:cloudscape:<DB> RmiJdbc.RJDriver Firebird (JCA/JDBC Driver) jdbc:firebirdsql:<HOST> [:<PORT>/]<DB> org.firebirdsql.jdbc.FBDriver IDS Server jdbc:ids://<HOST>:<PORT>/conn?dsn="<ODBC_DSN_NAME>" ids.sql.IDSDriver Informix Dynamic Server jdbc:informix-sqli://<HOST>:<PORT>/<DB>:INFORMIXSERVER=<SERVER_NAME> com.informix.jdbc.IfxDriver InstantDB (v3.13 and earlier) jdbc:idb:<DB> jdbc.idbDriver InstantDB (v3.14 and later) jdbc:idb:<DB> org.enhydra.instantdb.jdbc.idbDriver Interbase (InterClient Driver) jdbc:interbase://<HOST>/<DB> interbase.interclient.Driver Hypersonic SQL (v1.2 and earlier) jdbc:HypersonicSQL:<DB> hSql.hDriver Hypersonic SQL (v1.3 and later) jdbc:HypersonicSQL:<DB> org.hsql.jdbcDriver Microsoft SQL Server (JTurbo Driver) jdbc:JTurbo://<HOST>:<PORT>/<DB> com.ashna.jturbo.driver.Driver Microsoft SQL Server (Sprinta Driver) jdbc:inetdae:<HOST>:<PORT>?database=<DB> com.inet.tds.TdsDriver Microsoft SQL Server 2000 (Microsoft Driver) jdbc:microsoft:sqlserver://<HOST>:<PORT>[;DatabaseName=<DB>] com.microsoft.jdbc.sqlserver.SQLServerDriver MySQL (MM.MySQL Driver) jdbc:mysql://<HOST>:<PORT>/<DB> org.gjt.mm.mysql.Driver Oracle OCI 8i jdbc:oracle:oci8:@<SID> oracle.jdbc.driver.OracleDriver Oracle OCI 9i jdbc:oracle:oci:@<SID> oracle.jdbc.driver.OracleDriver PostgreSQL (v6.5 and earlier) jdbc:postgresql://<HOST>:<PORT>/<DB> postgresql.Driver PostgreSQL (v7.0 and later) jdbc:postgresql://<HOST>:<PORT>/<DB> org.postgresql.Driver Sybase (jConnect 4.2 and earlier) jdbc:sybase:Tds:<HOST>:<PORT> com.sybase.jdbc.SybDriver Sybase (jConnect 5.2) jdbc:sybase:Tds:<HOST>:<PORT> com.sybase.jdbc2.jdbc.SybDriver

 //To test your driver once it"s installed, try the following code:
 Class.forName("Driver name");
 Connection con = DriverManager.getConnenction("jdbcurl","username","password");</source>
   
  
 
  



boolean java.sql.Driver.jdbcCompliant()

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.util.Collections; import java.util.List; public class Main {

 public static void main(String[] argv) throws Exception {
   List drivers = Collections.list(DriverManager.getDrivers());
   for (int i = 0; i < drivers.size(); i++) {
     Driver driver = (Driver) drivers.get(i);
     String name = driver.getClass().getName();
     System.out.println(name);
     int majorVersion = driver.getMajorVersion();
     System.out.println(majorVersion);
     int minorVersion = driver.getMinorVersion();
     System.out.println(minorVersion);
     boolean isJdbcCompliant = driver.jdbcCompliant();
     System.out.println(isJdbcCompliant);
   }
 }

}</source>





boolean java.sql.DriverPropertyInfo.required (Is property value required?)

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.sql.DriverPropertyInfo; public class Main {

 public static void main(String[] argv) throws Exception {
   String driverName = "org.gjt.mm.mysql.Driver";
   Class.forName(driverName);
   String url = "jdbc:mysql://a/b";
   Driver driver = DriverManager.getDriver(url);
   DriverPropertyInfo[] info = driver.getPropertyInfo(url, null);
   for (int i = 0; i < info.length; i++) {
     String name = info[i].name;
     boolean isRequired = info[i].required;
     String value = info[i].value;
     String desc = info[i].description;
     String[] choices = info[i].choices;
   }
 }

}</source>





DriverManager.getDrivers(): enumerate all the loaded JDBC drivers:

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; public class Main {

 public static void main(String[] args) throws Exception {
   Class driverClass = Class.forName("org.hsqldb.jdbcDriver");
   DriverManager.registerDriver((Driver) driverClass.newInstance());
   // Print out all loaded JDBC drivers.
   java.util.Enumeration e = java.sql.DriverManager.getDrivers();
   while (e.hasMoreElements()) {
     Object driverAsObject = e.nextElement();
     System.out.println("JDBC Driver=" + driverAsObject);
   }
 }

}</source>



JDBC Driver=org.hsqldb.jdbcDriver@19efb05
JDBC Driver=org.hsqldb.jdbcDriver@723d7c


DriverPropertyInfo[] java.sql.Driver.getPropertyInfo(String url, Properties info)

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.sql.DriverPropertyInfo; public class Main {

 public static void main(String[] argv) throws Exception {
   String driverName = "org.gjt.mm.mysql.Driver";
   Class.forName(driverName);
   String url = "jdbc:mysql://a/b";
   Driver driver = DriverManager.getDriver(url);
   DriverPropertyInfo[] info = driver.getPropertyInfo(url, null);
   for (int i = 0; i < info.length; i++) {
     String name = info[i].name;
     boolean isRequired = info[i].required;
     String value = info[i].value;
     String desc = info[i].description;
     String[] choices = info[i].choices;
   }
 }

}</source>





Enable JDBC logging

   <source lang="java">

import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class Main {

 public static void main(String args[]) throws Exception {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   String URL = "jdbc:odbc:dbName";
   Connection dbConn = DriverManager.getConnection(URL, "user", "pass");
   PrintWriter w = new PrintWriter(new OutputStreamWriter(System.out));
   DriverManager.setLogWriter(w);
   dbConn.close();
   PreparedStatement prepstmt;
   prepstmt = dbConn.prepareStatement("SELECT id FROM employee");
   prepstmt.execute();
   prepstmt.close();
   dbConn.close();
 }

}</source>





Get a List of all Available Parameters for Creating a JDBC Connection

Driver.getPropertyInfo() returns a list of all available properties that can be supplied when using the driver to create a JDBC connection.



   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.sql.DriverPropertyInfo; public class Main {

 public static void main(String[] args) throws Exception {
   Class.forName("org.hsqldb.jdbcDriver");
   String url = "jdbc:hsqldb:mem:data/tutorial";
   Driver driver = DriverManager.getDriver(url);
   DriverPropertyInfo[] info = driver.getPropertyInfo(url, null);
   for (int i = 0; i < info.length; i++) {
     System.out.println(info[i].name);
     // Is property value required?
     System.out.println(info[i].required);
     // Get current value
     System.out.println(info[i].value);
     // Get description of property
     System.out.println(info[i].description);
     // Get possible choices for property;
     // if null, value can be any string
     String[] choices = info[i].choices;
     if (choices != null) {
       for (int c = 0; c < choices.length; c++) {
         System.out.println(choices[c]);
       }
     }
   }
 }

}</source>





Getting Information about the Driver

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; public class Main {

 public static void main(String[] args) throws Exception {
   Driver myDriver = new org.hsqldb.jdbcDriver();
   DriverManager.registerDriver(myDriver);
   System.out.println(myDriver.acceptsURL("jdbc:mydriver://tutorial/"));
   System.out.println("Major Version: " +
           myDriver.getMajorVersion());
   System.out.println("Minor Version: " +
           myDriver.getMinorVersion());
   System.out.println("JDBC COMPLIANT driver? "
           + myDriver.jdbcCompliant());
 }

}</source>





int java.sql.Driver.getMajorVersion()

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.util.Collections; import java.util.List; public class Main {

 public static void main(String[] argv) throws Exception {
   List drivers = Collections.list(DriverManager.getDrivers());
   for (int i = 0; i < drivers.size(); i++) {
     Driver driver = (Driver) drivers.get(i);
     String name = driver.getClass().getName();
     System.out.println(name);
     int majorVersion = driver.getMajorVersion();
     System.out.println(majorVersion);
     int minorVersion = driver.getMinorVersion();
     System.out.println(minorVersion);
     boolean isJdbcCompliant = driver.jdbcCompliant();
     System.out.println(isJdbcCompliant);
   }
 }

}</source>





int java.sql.Driver.getMinorVersion()

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.util.Collections; import java.util.List; public class Main {

 public static void main(String[] argv) throws Exception {
   List drivers = Collections.list(DriverManager.getDrivers());
   for (int i = 0; i < drivers.size(); i++) {
     Driver driver = (Driver) drivers.get(i);
     String name = driver.getClass().getName();
     System.out.println(name);
     int majorVersion = driver.getMajorVersion();
     System.out.println(majorVersion);
     int minorVersion = driver.getMinorVersion();
     System.out.println(minorVersion);
     boolean isJdbcCompliant = driver.jdbcCompliant();
     System.out.println(isJdbcCompliant);
   }
 }

}</source>





Listing All Available Parameters for Creating a JDBC Connection

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.sql.DriverPropertyInfo; public class Main {

 public static void main(String[] argv) throws Exception {
   String driverName = "org.gjt.mm.mysql.Driver";
   Class.forName(driverName);
   String url = "jdbc:mysql://a/b";
   Driver driver = DriverManager.getDriver(url);
   DriverPropertyInfo[] info = driver.getPropertyInfo(url, null);
   for (int i = 0; i < info.length; i++) {
     String name = info[i].name;
     boolean isRequired = info[i].required;
     String value = info[i].value;
     String desc = info[i].description;
     String[] choices = info[i].choices;
   }
 }

}</source>





Setting the Login Timeout

   <source lang="java">

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; public class Main {

 public static void main(String[] args) throws Exception {
   Connection conn = getHSQLConnection();
   conn.setAutoCommit(false);
   Statement st = conn.createStatement();
   st.executeUpdate("create table survey (id int,name varchar(30));");
   st.executeUpdate("insert into survey (id,name ) values (1,"nameValue")");
   st = conn.createStatement();
   ResultSet rs = st.executeQuery("SELECT * FROM survey");
   outputResultSet(rs);
   rs.close();
   st.close();
   conn.close();
 }
 private static void outputResultSet(ResultSet rs) throws Exception {
   ResultSetMetaData rsMetaData = rs.getMetaData();
   int numberOfColumns = rsMetaData.getColumnCount();
   for (int i = 1; i < numberOfColumns + 1; i++) {
     String columnName = rsMetaData.getColumnName(i);
     System.out.print(columnName + "   ");
   }
   System.out.println();
   System.out.println("----------------------");
   while (rs.next()) {
     for (int i = 1; i < numberOfColumns + 1; i++) {
       System.out.print(rs.getString(i) + "   ");
     }
     System.out.println();
   }
 }
 private static Connection getHSQLConnection() throws Exception {
   Class.forName("org.hsqldb.jdbcDriver");
   String url = "jdbc:hsqldb:mem:data/tutorial";
   DriverManager.setLoginTimeout(60); // fail after 60 seconds
   return DriverManager.getConnection(url, "sa", "");
 }

}</source>





Specify a CharSet when connecting to a DBMS

   <source lang="java">

import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; public class Main {

 public static void main(String[] argv) throws Exception {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   Properties prop = new Properties();
   prop.put("charSet", "iso-8859-7"); 
   prop.put("user", "your username");
   prop.put("password", "your password");
   // Connect to the database
   Connection con = DriverManager.getConnection("url", prop);
 }

}</source>





String[] java.sql.DriverPropertyInfo.choices (Get possible choices for property; if null, value can be any string)

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.sql.DriverPropertyInfo; public class Main {

 public static void main(String[] argv) throws Exception {
   String driverName = "org.gjt.mm.mysql.Driver";
   Class.forName(driverName);
   String url = "jdbc:mysql://a/b";
   Driver driver = DriverManager.getDriver(url);
   DriverPropertyInfo[] info = driver.getPropertyInfo(url, null);
   for (int i = 0; i < info.length; i++) {
     String name = info[i].name;
     boolean isRequired = info[i].required;
     String value = info[i].value;
     String desc = info[i].description;
     String[] choices = info[i].choices;
   }
 }

}</source>





String java.sql.DriverPropertyInfo.description (Get description of property)

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.sql.DriverPropertyInfo; public class Main {

 public static void main(String[] argv) throws Exception {
   String driverName = "org.gjt.mm.mysql.Driver";
   Class.forName(driverName);
   String url = "jdbc:mysql://a/b";
   Driver driver = DriverManager.getDriver(url);
   DriverPropertyInfo[] info = driver.getPropertyInfo(url, null);
   for (int i = 0; i < info.length; i++) {
     String name = info[i].name;
     boolean isRequired = info[i].required;
     String value = info[i].value;
     String desc = info[i].description;
     String[] choices = info[i].choices;
   }
 }

}</source>





String java.sql.DriverPropertyInfo.name (Get name of property)

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.sql.DriverPropertyInfo; public class Main {

 public static void main(String[] argv) throws Exception {
   String driverName = "org.gjt.mm.mysql.Driver";
   Class.forName(driverName);
   String url = "jdbc:mysql://a/b";
   Driver driver = DriverManager.getDriver(url);
   DriverPropertyInfo[] info = driver.getPropertyInfo(url, null);
   for (int i = 0; i < info.length; i++) {
     String name = info[i].name;
     boolean isRequired = info[i].required;
     String value = info[i].value;
     String desc = info[i].description;
     String[] choices = info[i].choices;
   }
 }

}</source>





String java.sql.DriverPropertyInfo.value (Get current value)

   <source lang="java">

import java.sql.Driver; import java.sql.DriverManager; import java.sql.DriverPropertyInfo; public class Main {

 public static void main(String[] argv) throws Exception {
   String driverName = "org.gjt.mm.mysql.Driver";
   Class.forName(driverName);
   String url = "jdbc:mysql://a/b";
   Driver driver = DriverManager.getDriver(url);
   DriverPropertyInfo[] info = driver.getPropertyInfo(url, null);
   for (int i = 0; i < info.length; i++) {
     String name = info[i].name;
     boolean isRequired = info[i].required;
     String value = info[i].value;
     String desc = info[i].description;
     String[] choices = info[i].choices;
   }
 }

}</source>