一种jdbc-odbc桥连接Access的方法, 在xp系统下不需连接驱动(jar文件)

package util;

 

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Statement;

class Simpleselect {

 public static void main (String args[]) {

//  String url   = "jdbc:odbc:my-dsn";
  String file_name="src/util/my-dsn.mdb";
  String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+file_name+";PWD=123"; //如果没有密码:PSD=123则可以省去;

  String query = "SELECT * FROM emp";

  try {

   // Load the jdbc-odbc bridge driver

   Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");

   // Attempt to connect to a driver.  Each one
   // of the registered drivers will be loaded until
   // one is found that can process this URL

   Connection con = DriverManager.getConnection (
     url, "", "");

   // If we were unable to connect, an exception
   // would have been thrown.  So, if we get here,
   // we are successfully connected to the URL

   // Check for, and display and warnings generated
   // by the connect.

   checkForWarning (con.getWarnings ());

   // Get the DatabaseMetaData object and display
   // some information about the connection

   DatabaseMetaData dma = con.getMetaData ();

   System.out.println("/nConnected to " + dma.getURL());
   System.out.println("Driver       " +
    dma.getDriverName());
   System.out.println("Version      " +
    dma.getDriverVersion());
   System.out.println("");

   // Create a Statement object so we can submit
   // SQL statements to the driver

   Statement stmt = con.createStatement ();

   // Submit a query, creating a ResultSet object

   ResultSet rs = stmt.executeQuery (query);

   // Display all columns and rows from the result set

   dispResultSet (rs);

   // Close the result set

   rs.close();

   // Close the statement

   stmt.close();

   // Close the connection

   con.close();
  }
  catch (SQLException ex) {

   // A SQLException was generated.  Catch it and
   // display the error information.  Note that there
   // could be multiple error objects chained
   // together

   System.out.println ("/n*** SQLException caught ***/n");

   while (ex != null) {
    System.out.println ("SQLState: " +
     ex.getSQLState ());
    System.out.println ("Message:  " +
     ex.getMessage ());
    System.out.println ("Vendor:   " +
     ex.getErrorCode ());
    ex = ex.getNextException ();
    System.out.println ("");
   }
  }
  catch (java.lang.Exception ex) {

   // Got some other type of exception.  Dump it.

   ex.printStackTrace ();
  }
 }

 //-------------------------------------------------------------------
 // checkForWarning
 // Checks for and displays warnings.  Returns true if a warning
 // existed
 //-------------------------------------------------------------------

 private static boolean checkForWarning (SQLWarning warn)
   throws SQLException
 {
  boolean rc = false;

  // If a SQLWarning object was given, display the
  // warning messages.  Note that there could be
  // multiple warnings chained together

  if (warn != null) {
   System.out.println ("/n *** Warning ***/n");
   rc = true;
   while (warn != null) {
    System.out.println ("SQLState: " +
     warn.getSQLState ());
    System.out.println ("Message:  " +
     warn.getMessage ());
    System.out.println ("Vendor:   " +
     warn.getErrorCode ());
    System.out.println ("");
    warn = warn.getNextWarning ();
   }
  }
  return rc;
 }

 //-------------------------------------------------------------------
 // dispResultSet
 // Displays all columns and rows in the given result set
 //-------------------------------------------------------------------

 private static void dispResultSet (ResultSet rs)
  throws SQLException
 {
  int i;

  // Get the ResultSetMetaData.  This will be used for
  // the column headings

  ResultSetMetaData rsmd = rs.getMetaData ();

  // Get the number of columns in the result set

  int numCols = rsmd.getColumnCount ();

  // Display column headings

  for (i=1; i<=numCols; i++) {
   if (i > 1) System.out.print(",");
   System.out.print(rsmd.getColumnLabel(i));
  }
  System.out.println("");
  
  // Display data, fetching until end of the result set

  while (rs.next ()) {

   // Loop through each column, getting the
   // column data and displaying

   for (i=1; i<=numCols; i++) {
    if (i > 1) System.out.print(",");
    System.out.print(rs.getString(i));
   }
   System.out.println("");

   // Fetch the next result set row

  }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值