邀月

从.net中走来的Java爱好者
posts - 22, comments - 10, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

java中如何以windows集成方式连接SQL Server

Posted on 2009-09-24 12:27 邀月 阅读(1530) 评论(0)  编辑  收藏 所属分类: EclipseNetBeans

在《JDBC Driver For SQL2000/2005/2008》一文中,邀月介绍了如何下载并使用jdbc连接SQL Server,
今天有人问起,如何以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(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方式也可以实现:
代码如下:
Java
如果是用户名加密码的URL方式,则不需要sqljdbc_auth.dll,简单多了:
Java
调用:
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方式,分别见第一种和第二种。
如果有任何问题,请联系邀月。
助人等于自助!   3w@live.cn

邀月注:本文版权由邀月和博客园(BlogJava)共同所有,转载请注明出处。
助人等于自助!   3w@live.cn

只有注册用户登录后才能发表评论。


网站导航: