如何使用JDBC驱动来测试SQL Server连接

大家可能都知道如何使用ODBC, OLEDB或者SQL Native Client这些驱动来测试SQL Server的连接。那么如何使用JDBC驱动来测试SQL Server连接呢?

今天我们提供一个使用JDBC驱动去连接SQL Server的具体步骤

1 安装

Microsoft SQL Server JDBC驱动3.0(运行在JDK5.0版本及以上)             

https://www.microsoft.com/download/en/details.aspx?id=21599

下载JDK7.0

https://www.oracle.com/technetwork/java/javase/downloads/index.html   2 设置系统环境变量(CLASSPATH)

2 设置系统环境变量(CLASSPATH)

系统环境变量 (注意:设置完类路径之后记得重启电脑。)

变量名:  CLASSPATH

值:  C:\Program Files\Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.0\enu\sqljdbc.jar

 

3 用Java样例代码测试连接(接下来两个例子都是使用SQL 2005 JDBC驱动)

1) 将本文的附录中脚本分别保存成以下两个java文件

 Connect.java:  该代码尝试连接数据库,显示数据库名,版本信息,还有可用的目录。用你服务器的值替换样例代码里的服务器属性。
 testConnect.java:   该代码尝试测试和SQL Server的连接,如果连接成功的话会显示‘连接成功’。替换样例代码里的相关连接属性,如服务器名等。

请参考MSDN文档来构造连接字符串:https://msdn.microsoft.com/en-us/library/ms378428(SQL.90).aspx

2) 把附件中的样例java代码移到java.exe和javac.exe所在的目录,默认的目录路径是 C:\Program Files\Java\jdk1.7.0\bin

3) 编译样例java代码,类似:javac Connect.java    注意:“Connect.java” 大小写敏感 。

4) 运行它  :java Connet     注意:“Connect” 大小写敏感 。

 

4 附加信息

1)     SQL Server 2000 JDBC驱动和SQL Server 2005 JDBC驱动的类名不同。

         * SQL Server 2000 JDBC驱动类名:"com.microsoft.jdbc.sqlserver.SQLServerDriver"

         * SQL Server 2005 JDBC驱动类名:"com.microsoft.sqlserver.jdbc.SQLServerDriver"

        另外,SQL Server 2005 JDBC驱动的URL前缀和SQL Server 2000 JDBC驱动的也不一样。

         * SQL Server 2000 使用的URL 前缀:  "jdbc:microsoft:sqlserver://"

         * SQL Server 2005 使用的URL 前缀:  "jdbc:sqlserver://"

  2)     MSDN上的JDBC信息:https://msdn.microsoft.com/en-us/sqlserver/aa937724

 

 

===========================附录===========================

testConnection.java script content

import java.*;
import java.sql.*;
import java.util.*;
import java.text.*;
import java.sql.SQLException;
import java.util.logging.FileHandler;
import java.io.IOException;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.LogRecord;
import java.util.logging.SimpleFormatter;
import java.util.Date;

class testConnection
{
  public static void main (String[] args) {
    try
    {
      // Step 1: Load the JDBC driver.
      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
      // Step 2: Establish the connection to the database.

      String connectionUrl = "jdbc:sqlserver://localhost;databaseName=AdventureWorks;user=sa;password=sa";
      Date strtime = new Date();
      System.out.println("Start Time: " + strtime);
      Connection con = DriverManager.getConnection(connectionUrl);
      Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.SQLServerDriver");
      logger.setLevel(Level.ALL);
      FileHandler fh = new FileHandler("%t/java.log");
      Date endtime = new Date();       
      System.out.println("End Time is: " + endtime);
      logger.info("Connected.");
      System.out.println("connected");
  
    }
    catch (Exception e)
    {
      System.err.println("Got an exception! ");
      e.printStackTrace();
      System.err.println(e.getMessage());
    }
  }
}

 

Connect.java script content

import java.*;
public class Connect{
     private java.sql.Connection  con = null;
     private final String url = "jdbc:sqlserver://";
     private final String serverName= "localhost";
     private final String portNumber = "1433";
     private final String databaseName= "northwind";
     private final String userName = "sa";
     private final String password = "sa";
     // Informs the driver to use server a side-cursor,
     // which permits more than one active statement
     // on a connection.
     private final String selectMethod = "cursor";
    
     // Constructor
     public Connect(){}
    
     private String getConnectionUrl(){
          return url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";
     }
    
     private java.sql.Connection getConnection(){
          try{
               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
               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;
      }

     /*
          Display the driver properties, database details
     */

     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("Driver Information");
                    System.out.println("\tDriver Name: "+ dm.getDriverName());
                    System.out.println("\tDriver Version: "+ dm.getDriverVersion ());
                    System.out.println("\nDatabase Information ");
                    System.out.println("\tDatabase Name: "+ dm.getDatabaseProductName());
                    System.out.println("\tDatabase Version: "+ dm.getDatabaseProductVersion());
                    System.out.println("Avalilable Catalogs ");
                    rs = dm.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;
     }    
    
     private void closeConnection(){
          try{
               if(con!=null)
                    con.close();
               con=null;
          }catch(Exception e){
               e.printStackTrace();
          }
     }
     public static void main(String[] args) throws Exception
       {
          Connect myDbTest = new Connect();
          myDbTest.displayDbProperties();
       }
}