文章来源:[url]http://blog.csdn.net/zhf811224/archive/2007/04/23/1575598.aspx[/url]

一、   OracleMicrosift网站上下载JDBC驱动程序

n         下载Oracle JDBC驱动程序

1.       网址:

[url]http://www.oracle.com/technology/global/cn/software/tech/java/sqlj_jdbc/index.html[/url]

2.       Eclipse安装目录,例如D:\lecture\JAVA\Eclipse\eclipse下创建路径:

D:\lecture\JAVA\Eclipse\eclipse\jdbc\OracleJDBC\lib

3.       下载4java归档文件放入其中:

1)       ocrs12.jar

2)       ojdbc14.jar

3)       ojdbc14dms.jar

4)       orai18n.jar

 

n         下载SQL Server 2000 Driver for JDBC Service Pack 3,支持JDK 1.4

1.       网址:

[url]http://www.microsoft.com/downloads/details.aspx?FamilyID=07287b11-0502[/url]-461a-b138-2aa54bfdc03a&displaylang=en

2.       执行setup.exe安装SQL Server JDBC驱动程序。在安装目录下有帮助文件。

3.       Eclipse安装目录,例如D:\lecture\JAVA\Eclipse\eclipse下创建路经:

D:\lecture\JAVA\Eclipse\eclipse\jdbc\SQLServerJDBC\lib

4.       setup.exe安装的下面3java归档文件放入其中:

1)       msbase.jar

2)       mssqlserver.jar

3)       msutil.jar

二、   在项目库中导入驱动程序库

1.       创建新项目。文件 > 新建 > 项目 > 打开新建项目对话框。

 

2.       选择Java项目 > 下一步 > 打开新建Java项目对话框。

 

3.       输入项目名JDBCTest > 完成。

4.       打开导航器窗口,检查新创建的项目。

 

三、   用于测试连接的代码示例

n         用于SQL Server的测试连接的代码示例

安装了 Microsoft SQL Server 2000 JDBC 驱动程序后,可以通过两种方式从您的程序连接到数据库:使用连接 URL,或使用 JNDI 数据源。本文介绍如何使用连接 URL 配置和测试数据库连接。

连接到数据库的一种方法是通过 JDBC 驱动程序管理器,使用 DriverManager 类的 getConnection 方法。使用此方法时,最简单的方式是使用一个包含 URL、用户名和密码的字符串参数。下面介绍如何从 JDBC 程序载入 Microsoft SQL Server 2000 JDBC 驱动程序。

 

创建测试类

1.       右击新建的项目JDBCTest > 新建 > >打开新建Java包对话框。

2.       在名称栏输入testJDBC > 完成。

3.       右击新建的包testJDBC > 新建 > > 打开新建Java类对话框。

4.       在名称栏输入SQLServerJDBCTest >完成。

 

添加库

要将JAR文件添加到现有应用程序中。

1.       右击项目JDBCTest > 属性 > 打开JDBCTest的属性对话框。

2.       在左边的窗格中选择Java构建路径 > 在右边的窗格中选择库标签

3.       单击按钮添加外部JAR > 选择前面下载的3SQL Server JDBC驱动程序的JAR文件 > 确定。

 

注册驱动程序

注册驱动程序的目的是为了通知 JDBC 驱动程序管理器载入哪个驱动程序。当使用 class.forName 函数载入驱动程序时,您必须指定驱动程序的名称。以下是 Microsoft SQL Server 2000 JDBC 驱动程序的名称:

com.microsoft.jdbc.sqlserver.SQLServerDriver

下面的代码示例演示如何注册驱动程序:

Driver d = (Driver)Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

 

传递连接 URL

必须以连接 URL 的形式传递数据库连接信息。以下是 Microsoft SQL Server 2000 JDBC 驱动程序的模板 URL。请用您数据库的值替换以下值:

jdbc:microsoft:sqlserver://servername:1433

下面的代码示例演示如何指定连接 URL

con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433", "userName", "password");

 

服务器名称值可以是 IP 地址或主机名(假定您的网络可以将主机名解析为 IP 地址)。您可以通过对主机名执行 PING 命令来进行测试,验证是否可以接收到响应,以及响应的 IP 地址是否正确。

 

服务器名称后面的数字值是数据库侦听的端口号。上文列出的值是示例默认值。确保用您的数据库使用的端口号替换该值。

 

要获取连接 URL 参数的完整列表,请参见 Microsoft SQL Server 2000 JDBC 驱动程序 HTML 帮助,或参见联机指南。请参见“连接字符串属性”一节。

下面的代码示例尝试连接到数据库,并显示数据库名称、版本和可用编目。请用您服务器的值替换代码中的服务器属性:

package testJDBC;

 

public class SQLServerJDBCTest {

    private java.sql.Connection  con = null;

    private final String url = "jdbc:microsoft:sqlserver://";

    private final String serverName= "localhost";

    private final String portNumber = "1433";

    private final String databaseName= "pubs";

    private final String userName = "sa";

    private final String password = "wyfd";

    // 告诉驱动器使用服务器端游标,

    // 它允许在一个连接上的多个活动语句。

    private final String selectMethod = "cursor";

   

    private java.sql.Connection getConnection(){

        try{

          // A. 注册 SQL Server JDBC 驱动程序

          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

          // B. 创建新数据库连接

          con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);

          if(con!=null) System.out.println("Connection Successful!");

        }catch(Exception e){

          e.printStackTrace();

          System.out.println("Error Trace in getConnection() : " + e.getMessage());

        }

        return con;

      }

     

      private String getConnectionUrl(){

        return url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";

      }

     

      private void closeConnection(){

        try{

          if(con!=null)

            con.close();

          con=null;

          }catch(Exception e){

            e.printStackTrace();

          }

      }

 

      /*

          显示驱动器属性,数据库详细信息

       */

      public void displayDbProperties(){

        java.sql.DatabaseMetaData dm = null;

        java.sql.ResultSet rs = null;

          try{

            con= this.getConnection();

            if(con!=null){

              dm = con.getMetaData();

              System.out.println("驱动器信息:");

              System.out.println("\t驱动器名字: "+ dm.getDriverName());

              System.out.println("\t驱动器版本: "+ dm.getDriverVersion ());

              System.out.println("\n数据库信息: ");

              System.out.println("\t数据库名字: "+ dm.getDatabaseProductName());

              System.out.println("\t数据库版本: "+ dm.getDatabaseProductVersion());

              System.out.println("显示可用的数据库目录:");

              rs = dm.getCatalogs();

              while(rs.next()){

                System.out.println("\tcatalog: "+ rs.getString(1));

              }

              //rs = dm.getTables("ckgl",null,"ckgl","TABLE").getCatalogs();

              while(rs.next()){

                System.out.println("\tcatalog: "+ rs.getString(1));

              }

              rs.close();

              rs = null;

              closeConnection();

            }else System.out.println("Error: No active Connection");

          }catch(Exception e){

          e.printStackTrace();

          }

          dm=null;

      }

 

      public static void main(String[] args) {

          SQLServerJDBCTest sQLServerJDBCTest = new SQLServerJDBCTest();

          sQLServerJDBCTest.displayDbProperties();

      }

}

 

如果此代码运行成功,其输出结果应类似于以下内容:

IWAV0055I Java Bean testJDBC.SQLServerJDBCTest started with the main method

Connection Successful!

驱动器信息:

    驱动器名字: SQLServer

    驱动器版本: 2.2.0040

 

数据库信息:

    数据库名字: Microsoft SQL Server

    数据库版本: Microsoft SQL Server  2000 - 8.00.2039 (Intel X86)

    May  3 2005 23:18:38

    Copyright (c) 1988-2003 Microsoft Corporation

    Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2)

 

显示可用的数据库目录:

    catalog: ckgl

    catalog: coal

    catalog: master

    catalog: msdb

    catalog: Northwind

    catalog: pubs

    catalog: student

    catalog: tempdb

 

有关排除连接故障的基本信息

下面是尝试连接到 SQL 服务器时常见的错误信息:

java.sql.SQLException:[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Login failed for user 'user'.Reason:Not associated with a trusted SQL Server connection.

如果将 SQL Server 2000 的验证模式设置为“Windows 验证模式”,则会出现此错误信息。Microsoft SQL Server 2000 JDBC 驱动程序不支持使用 Windows NT 验证进行连接。您必须将 SQL Server 的验证模式设置为“混合模式”,该模式既允许 Windows 验证,也允许 SQL Server 验证。

java.sql.SQLException:[Microsoft][SQLServer 2000 Driver for JDBC]This version of the JDBC driver only supports Microsoft SQL Server 2000. You can either upgrade to SQL Server 2000 or possibly locate another version of the driver.

当您尝试连接到 SQL Server 2000 以前的 SQL Server 版本时,则会出现此错误信息。Microsoft SQL Server 2000 JDBC 驱动程序仅支持与 SQL Server 2000 进行连接。

 

n         用于Oracle的测试连接的代码示例

import java.sql.Connection;

import java.sql.DatabaseMetaData;

import java.sql.DriverManager;

import java.sql.SQLException;

package testJDBC;

 

import java.sql.Connection;

import java.sql.DatabaseMetaData;

import java.sql.DriverManager;

import java.sql.SQLException;

 

public class OracleJDBCTest {

    public static void main(String[] args) throws SQLException, ClassNotFoundException  {

        // A. 注册 Oracle JDBC 驱动程序。下面两种方法都可以

        //DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

        Class.forName("oracle.jdbc.driver.OracleDriver");

        // B. 创新新数据库连接

        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oract", "hr", "hr");

        // C. 取得连接数据(元数据)

        DatabaseMetaData md = conn.getMetaData();

        System.out.println("数据库版本:");

        System.out.println("------------------------------------------------");

        System.out.println(md.getDatabaseProductVersion());

        System.out.println();

        System.out.println("驱动程序名称与版本:");

        System.out.println("------------------------------------------------");

        System.out.print(md.getDriverName() + " " + md.getDriverVersion());

        // D. 关闭数据库连接

        conn.close();

    }

}

不要忘记添加前面下载的4Oracle JDBC库文件。

如果此代码运行成功,其输出结果应类似于以下内容:

数据库版本:

------------------------------------------------

IWAV0055I Java Bean testJDBC.OracleJDBCTest started with the main method

数据库版本:

------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production

With the Partitioning, OLAP and Data Mining options

 

驱动程序名称与版本:

------------------------------------------------

Oracle JDBC driver 10.1.0.5.0

 

注意:有时连接错误是由防火墙造成的,所以在用JDBC进行数据库开发时要闭防火墙,包括winXP自带的防火墙。