`

JDBC for SQL2005的使用 (默认实例和命名实例的不同)

阅读更多

JDBC 驱动程序并未包含在 Java SDK 中。因此,如果要使用该驱动程序,必须将 classpath 设置为包含 sqljdbc.jar 文件。如果 classpath 缺少 sqljdbc.jar 项,应用程序将引发“找不到类”的常见异常。

sqljdbc.jar 文件的安装位置如下:

<安装目录>\sqljdbc_<版本>\<语言>\sqljdbc.jar

下面是用于 Windows 应用程序的 CLASSPATH 语句实例:

CLASSPATH =.;C:\Program Files\Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.1\enu\sqljdbc.jar

下面是用于 Unix/Linux 应用程序的 CLASSPATH 语句实例:

CLASSPATH =.:/home/usr1/mssqlserver2005jdbc/Driver/sqljdbc_1.1/enu/sqljdbc.jar

注意: 在 Window 系统中,如果目录名长于 8.3 或文件夹名中包含空格,将导致 classpath 出现问题。如果怀疑存在这类问题,应暂时将 sqljdbc.jar 文件移动到名称简单的目录中,例如 C:\Temp,更改 classpath,然后测试这样是否解决了问题。

 

直接在命令提示符运行的应用程序

在操作系统中配置 classpath。将 sqljdbc.jar 追加到系统的 classpath 中。或者,使用 java -classpath 选项,可以在运行此应用程序的 Java 命令行上指定 classpath。

在 IDE 中运行的应用程序

每个 IDE 供应商都提供了在 IDE 中设置 classpath 的不同方法。仅在操作系统中设置 classpath 将无法正常工作。必须将 sqljdbc.jar 添加到 IDE classpath。

Servlet 和 JSP

Servlet 和 JSP 在 servlet/JSP 引擎(如 Tomcat)中运行。必须根据 servlet/JSP 引擎文档来设置 classpath。仅在操作系统中设置 classpath 将无法正常工作。一些 servlet/JSP 引擎提供了设置屏幕,用于设置引擎的 classpath。在这种情况下,必须将正确的 JDBC Driver JAR 文件追加到现有的引擎 classpath,然后重新启动引擎。在其他情况下,通过在引擎安装期间将 sqljdbc.jar 文件复制到 lib 之类的特定目录,可以部署此驱动程序。也可以在引擎专用的配置文件中指定引擎驱动程序的 classpath。

Enterprise Java Beans

Enterprise Java Bean (EJB) 在 EJB 容器中运行。EJB 容器来自多家供应商。Java 小程序在浏览器中运行,但是从 Web 服务器上下载。将 sqljdbc.jar 复制到 Web 服务器根目录,并在小程序的 HTML 存档选项卡中指定 JAR 文件的名称,例如 <applet ... archive=sqljdbc.jar>

若要使用 DriverManager 类连接到数据库,必须首先按如下方式注册驱动程序:

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

加载驱动程序后,可通过使用连接 URL 来建立连接:

String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
   "databaseName=AdventureWorks;user=MyUserName;password=*****;";
Connection con = DriverManager.getConnection(connectionUrl);

连接 URL 的一般形式为:

 

jdbc:sqlserver://serverName;instanceName:portNumber;property=value[;property=value]

其中:

  • jdbc:sqlserver://(必需)称为子协议,且为常数。

  • serverName(可选)是要连接到的服务器的地址。它可以是 DNS 或 IP 地址,也可以是本地计算机地址 localhost 或 127.0.0.1。如果未在连接 URL 中指定服务器名称,则必须在属性集中指定。

  • instanceName (可选)是 serverName 上要连接到的实例。如果未指定,则会连接到默认实例。

  • portNumber(可选)是 serverName 上要连接到的端口。默认值为 1433。如果使用默认端口,则无需在 URL 中指定端口及其前面的“:”。

    注意: 若要获得最佳连接性能,应在连接到命名实例时设置 portNumber。这将避免为了确定端口号而与服务器进行往返通讯。如果同时使用 portNumber 和 instanceName,则会优先使用 portNumber,而忽略 instanceName。

     

  • property(可选)是一个或多个选项连接属性。有关详细信息,请参阅设置连接属性。可指定该列表中的任何属性。属性只能用分号(“;”)分隔,且不允许重复。

警告: 出于安全考虑,应避免根据用户输入的内容创建连接 URL。只应在 URL 中指定服务器名称和驱动程序。对于用户名和密码值,请使用连接属性集。

 

使用用户名和密码连接到本地计算机上的默认数据库:

jdbc:sqlserver://localhost;user=MyUserName;password=*****;

注意: 尽管以上实例在连接字符串中使用了用户名和密码,但如果在 Windows 操作系统中运行应用程序,则应使用集成安全性,因为这样会更加安全。有关详细信息,请参阅本主题后面部分的通过集成身份验证进行连接一节。

 

使用集成身份验证连接到本地计算机上的默认数据库:

jdbc:sqlserver://localhost;integratedSecurity=true;

连接到远程服务器上的指定数据库:

jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;

连接到远程服务器上的默认端口:

jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks;integratedSecurity=true;

通过指定自定义应用程序名称进行连接:

jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp;

指定的多个 SQL Server 实例

SQL Server 2000 和 SQL Server 2005 允许在每台服务器上安装多个数据库实例。每个实例都由一个专用名称所标识。若要连接到 SQL Server 的命名实例,可以使用命名实例的端口号(首选),也可将实例名指定为 JDBC URL 属性或 datasource 属性。如果未指定实例名属性或端口号属性,则会创建与默认实例的连接。如以下实例所示:

若要使用端口号,请执行下列操作:

jdbc:sqlserver://localhost:1433;integratedSecurity=true;<more properties as required>;

若要使用 JDBC URL 属性,请执行下列操作:

jdbc:sqlserver://localhost;instanceName=instance1;integratedSecurity=true;<more properties as required>;

转义连接 URL 中的值

由于包含特殊字符(如空格、分号和引号),所以必须转义连接 URL 值的某些部分。如果这些字符包含在大括号中,则 JDBC 驱动程序将支持对其进行转义。例如,{;} 将转义分号。

转义的值可以包含特殊字符(特别是“=”、“;”、“[]”和空格),但不能包含大括号。应将必须进行转义且包含大括号的值添加到属性集中。

注意: 大括号内的空白为常量,不能删除。

 

JDBC 驱动程序支持通过 integratedSecurity 连接字符串属性在 Windows 操作系统上使用“类型 2”集成身份验证。若要使用集成身份验证,请将 sqljdbc_auth.dll 文件复制到计算机中 Windows 系统路径下的 JDBC 驱动程序安装目录中。

sqljdbc_auth.dll 文件的安装位置如下:

<安装目录>\sqljdbc_<版本>\<语言>\auth\

注意: 如果使用 32 位处理器,请使用 x86 文件夹中的 sqljdbc_auth.dll 文件。如果使用 64 位处理器,请使用 x64 文件夹中的 sqljdbc_auth.dll 文件。

 

也可以通过设置 java.libary.path 系统属性来指定 sqljdbc_auth.dll 的目录,例如,如果 JDBC 驱动程序安装在默认目录中,您可以在 Java 应用程序启动时使用以下虚拟机 (VM) 参数来指定 DLL 的位置:

-Djava.library.path=C:\Microsoft SQL Server 2005 JDBC Driver\sqljdbc_<version>\enu\auth\x86

JDBC 驱动程序支持使用具有连接属性集和 serverName 连接字符串属性的 IPv6 地址。连接字符串不支持在 IPv6 地址中使用初始 serverName 值,如 jdbc:sqlserver://serverName。使用 serverName 的名称而不是原始 IPv6 地址将适用于连接中的所有情况。以下实例提供了详细信息。

使用 serverName 属性

jdbc:sqlserver://;serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1;integratedSecurity=true;

使用属性集

Properties pro = new Properties();

pro.setProperty("serverName", "serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1");

Connection con = DriverManager.getConnection("jdbc:sqlserver://;integratedSecurity=true;", pro);

分享到:
评论

相关推荐

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    PL/SQL 基础.doc

    和NUMBER的底层的保存方式不同, BINARY_INTEGER为2进制保存,NUMBER 需要考虑其他东西不是2进制方式 BINARY_INTEGER之间做加法效率快而NUMBER要先转换2进制再计算 单纯的计算----&gt;BINARY_INTEGER 考虑和表中其他...

    Hibernate实战(第2版 中文高清版)

     1.3.2 用SQL/JDBC手工编写持久层   1.3.3 使用序列化   1.3.4 面向对象的数据库系统   1.3.5 其他选项   1.4 ORM   1.4.1 什么是ORM   1.4.2 一般的ORM问题   1.4.3 为什么选择ORM   1.4.4 ...

    Spring.3.x企业应用开发实战(完整版).part2

    第11章 使用Spring JDBC访问数据库 11.1 使用Spring JDBC 11.1.1 JDBCTemplate小试牛刀 11.1.2 在DAO中使用JDBCTemplate 11.2 基本的数据操作 11.2.1 更改数据 11.2.2 返回数据库的表自增主键值 11.2.3 批量更改数据...

    Spring3.x企业应用开发实战(完整版) part1

    第11章 使用Spring JDBC访问数据库 11.1 使用Spring JDBC 11.1.1 JDBCTemplate小试牛刀 11.1.2 在DAO中使用JDBCTemplate 11.2 基本的数据操作 11.2.1 更改数据 11.2.2 返回数据库的表自增主键值 11.2.3 批量更改数据...

    Hibernate+中文文档

    16.2. 命名SQL查询 16.2.1. 使用return-property来明确地指定字段/别名 16.2.2. 使用存储过程来查询 16.3. 定制SQL用来create,update和delete 16.4. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器...

    最全Hibernate 参考文档

    19.1.3. 实例化集合和代理(Initializing collections and proxies) 19.1.4. 使用批量抓取(Using batch fetching) 19.1.5. 使用子查询抓取(Using subselect fetching) 19.1.6. 使用延迟属性抓取(Using lazy...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    16.2. 命名SQL查询 16.2.1. 使用return-property来明确地指定字段/别名 16.2.2. 使用存储过程来查询 16.3. 定制SQL用来create,update和delete 16.4. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器...

    HibernateAPI中文版.chm

    16.2. 命名SQL查询 16.2.1. 使用return-property来明确地指定字段/别名 16.2.2. 使用存储过程来查询 16.3. 定制SQL用来create,update和delete 16.4. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器...

    hibernate3.2中文文档(chm格式)

    16.2. 命名SQL查询 16.2.1. 使用return-property来明确地指定字段/别名 16.2.2. 使用存储过程来查询 16.3. 定制SQL用来create,update和delete 16.4. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器...

    Spring API

    11.2. 利用JDBC核心类控制JDBC的基本操作和错误处理 11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口...

    Spring中文帮助文档

    11.2. 利用JDBC核心类控制JDBC的基本操作和错误处理 11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口...

    Hibernate3+中文参考文档

    19.1.3. 实例化集合和代理(Initializing collections and proxies) 19.1.4. 使用批量抓取(Using batch fetching) 19.1.5. 使用子查询抓取(Using subselect fetching) 19.1.6. 使用延迟属性抓取(Using lazy...

    hibernate 框架详解

    混合使用“每个类分层结构一张表”和“每个子类一张表” 10.1.5. 每个具体类一张表(Table per concrete class) 10.1.6. Table per concrete class, using implicit polymorphism 10.1.7. 隐式多态和其他继承映射...

    J2EE应用开发详解

    282 第16章 数据库技术和JDBC技术 283 16.1 关系数据库和SQL 283 16.2 关系数据库的工作环境 284 16.3 基于JDBC的数据访问技术 285 16.3.1 JDBC概述 285 16.3.2 数据库驱动程序 287 16.3.3 使用JDBC查询数据库 291 ...

    hibernate 体系结构与配置 参考文档(html)

    混合使用“每个类分层结构一张表”和“每个子类一张表” 9.1.5. 每个具体类一张表(Table per concrete class) 9.1.6. Table per concrete class, using implicit polymorphism 9.1.7. 隐式多态和其他继承映射...

    javaSE代码实例

    14.6.9 使用for-each循环遍历集合 300 14.7 映射集 301 14.7.1 Map接口及含义 301 14.7.2 HashMap类的使用 302 14.7.3 Hashtable类的使用 303 14.7.4 LinkedHashMap类的使用 304 14.7.5 SortedMap接口...

Global site tag (gtag.js) - Google Analytics