程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中以windows集成方式連接SQL Server

java中以windows集成方式連接SQL Server

編輯:關於JAVA

今天有人問起,如何以windows集成方式連接SQL Server,這個以前真沒試過。

於是,打開netBeans測試了一下,代碼如下:

/*
  * To change this template, choose Tools | Templates
  * and open the template in the editor.
  */
package testsqlconn;
import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;
/** *//**
  *
  * @author: Administrator:downmoon([email protected])
  * @date:2009-9-23 18:42:32
  * @Encoding:UTF-8
  * @File:TestSqlbyDS/TestSqlbyDS.java
  * @Package:testsqlconn
  */
public class TestSqlbyDS {
     public TestSqlbyDS(){}
     public void GetResutls()
     {
      // Declare the JDBC objects.
         Connection con = null;
         CallableStatement cstmt = null;
         ResultSet rs = null;
         try {
             // Establish the connection.
             SQLServerDataSource ds = new SQLServerDataSource();
             ds.setIntegratedSecurity(true);
             ds.setServerName("ap4\\agronet08");//數據庫實例名
             ds.setPortNumber(1433);
             ds.setDatabaseName("AdventureWorksLT2008");//Database Name
             con = ds.getConnection();
             // Execute a SQL that returns some data.
             //cstmt = con.prepareCall("{call dbo.uspGetEmployeeManagers(?)}");
             //cstmt.setInt(1,50);
             cstmt = con.prepareCall(" select top 10 * from [SalesLT].[Product] ");//Sql
             rs = cstmt.executeQuery();
             // Iterate through the data in the result set and display it.
             while (rs.next()) {
                 System.out.println("Product: " + rs.getString("Name") + ", " + rs.getString("ProductNumber"));
                 System.out.println("ListPrice: " + rs.getString("ListPrice"));
                 System.out.println();
             }
         } // Handle any errors that may have occurred.
         catch (Exception e) {
             e.printStackTrace();
         } finally {
             if (rs != null) {
                 try {
                     rs.close();
                 } catch (Exception e) {
                 }
             }
             if (cstmt != null) {
                 try {
                     cstmt.close();
                 } catch (Exception e) {
                 }
             }
             if (con != null) {
                 try {
                     con.close();
                 } catch (Exception e) {
                 }
             }
         }
     }
}

結果提示:找不到sqljdbc_auth.dll,到下載的壓縮包裡看了下:auth\x86,auth\x64\,auth\IA64下都有該文件,直接復制auth\x86\sqljdbc_auth.dll到

E:\Java\jdkUpdate\jre\lib\ext\下,這是本機的jre路徑。

然後運行。成功!

後來再試了下,發現直接用URL方式也可以實現:

代碼如下:

Java

/*
  * To change this template, choose Tools | Templates
  * and open the template in the editor.
  */
package testsqlconn;
import java.sql.*;
/** *//**
  *
  * @author: Administrator:downmoon([email protected])
  * @date:2009-9-23 18:42:32
  * @Encoding:UTF-8
  * @File:TestSqlByURL/TestSqlByURL.java
  * @Package:testsqlconn
  */
public class TestSqlByURL {
     public TestSqlByURL() {
     }
     public void GetResults() {
         // Create a variable for the connection string.
         String connectionUrl = "jdbc:sqlserver://ap4\\agronet08:1433;databaseName=AdventureWorksLT2008;integratedSecurity=true;";
         // Declare the JDBC objects.
         Connection con = null;
         Statement stmt = null;
         ResultSet rs = null;
         try {
             // Establish the connection.
             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
             con = DriverManager.getConnection(connectionUrl);
             // Create and execute an SQL statement that returns some data.
             String SQL = "SELECT TOP 10 * FROM [SalesLT].[Product]";
             stmt = con.createStatement();
             rs = stmt.executeQuery(SQL);
             // Iterate through the data in the result set and display it.
             while (rs.next()) {
                 System.out.println(rs.getString(2) + " " + rs.getString(3));
             }
         } // Handle any errors that may have occurred.
         catch (Exception e) {
             e.printStackTrace();
         } finally {
             if (rs != null) {
                 try {
                     rs.close();
                 } catch (Exception e) {
                 }
             }
             if (stmt != null) {
                 try {
                     stmt.close();
                 } catch (Exception e) {
                 }
             }
             if (con != null) {
                 try {
                     con.close();
                 } catch (Exception e) {
                 }
             }
         }
     }
}

如果是用戶名加密碼的URL方式,則不需要sqljdbc_auth.dll,簡單多了:

Java

/*
  * To change this template, choose Tools | Templates
  * and open the template in the editor.
  */
package testsqlconn;
import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;
/** *//**
  *
  * @author: Administrator:downmoon([email protected])
  * @date:2009-9-23 18:42:32
  * @Encoding:UTF-8
  * @File:TestSqlUserPwdURL/TestSqlUserPwdURL.java
  * @Package:testsqlconn
  */
public class TestSqlUserPwdURL {
     public TestSqlUserPwdURL(){}
  public static void ShowProduct(String ip,String dbName,String user,String pwd,int port,String sql) {
         try {
             // ## DEFINE VARIABLES SECTION ##
             // define the driver to use
             String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
             // the database name
             //String dbName = "AdventureWorksLT2008";
             // define the Derby connection URL to use
             String connectionURL = "jdbc:sqlserver://"+ip+":"+port+";databaseName=" + dbName;
             //  System.out.println(connectionURL);
             Connection conn = null;
             // Beginning of JDBC code sections
             // ## LOAD DRIVER SECTION ##
             Class.forName(driver);
             System.out.println(driver + " loaded. ");
             conn = DriverManager.getConnection(connectionURL, user, pwd);
             Statement s = conn.createStatement();
             ResultSet rs = s.executeQuery(sql);
             while (rs.next()) {
                 System.out.println("ID   :  " + rs.getInt(1));
                 System.out.println("Name  :  " + rs.getString(2));
                 System.out.println("Number:  " + rs.getString(3));
                 System.out.println("Time:  " + rs.getString(4));
                 System.out.println();
             }
             rs.close();
             s.close();
             conn.close();
         } catch (Exception e) {
             System.out.println("Exception:  " + e);
             e.printStackTrace();
         }
     }
}

調用:

TestSqlUserPwdURL test3=new TestSqlUserPwdURL();
        String sql="SELECT top 10  ProductID,[Name],ProductNumber,Modifieddate FROM  [SalesLT].[Product] ";
        test3.ShowProduct("192.168.30.99\\agronet08", "AdventureWorksLT2008", "sa", "sa", 1433, sql);

小結:java的jdbc集成windows方式連接共有兩種方式:data source object和URL方式,分別見第一種和第二種。

如果有任何問題,請聯系邀月。

助人等於自助!   [email protected]

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved