当前位置:首页 > 青鸟知识 > java

java的jdbc集成windows方式:data source object和URL

来源:长沙北大青鸟 发布日期:2017-03-22

  java的jdbc集成windows方式的连接方式有两种,即data source object和URL。此前有介绍过如何下载并使用jdbc连接SQL Server,那么如何以windows集成方式连接SQL Server了?下面以data source object和URL两种方式分别实现用windows集成方式连接SQL Server。

java.jpg

  于是,打开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(3w@live.cn)

  * @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方式也可以实现:

  代码如下:

  /**//*

  * To change this template, choose Tools | Templates

  * and open the template in the editor.

  */

  package testsqlconn;

  import java.sql.*;

  /** *//**

  *

  * @author: Administrator:downmoon(3w@live.cn)

  * @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,简单多了:

  /**//*

  * 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(3w@live.cn)

  * @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();

  }

  }

  }


拒绝套路 试听有礼

数据已加密保证您的信息安全