系统要求
首先从www.microsoft.com下载JDBC Driver。
为了支持向后兼容以及可能的升级方案,JDBC Driver 2.0 在每个安装包中都包括 2 个 JAR 类库:sqljdbc.jar 和 sqljdbc4.jar 。
JAR | 说明 |
---|---|
sqljdbc.jar | sqljdbc.jar 类库提供对 JDBC 3.0 的支持。 sqljdbc.jar 类库要求使用 5.0 版的 Java 运行时环境 (JRE)。连接到数据库时,在 JRE 6.0 上使用 sqljdbc.jar 会引发异常。
注意: JDBC Driver 2.0 不支持 JRE 1.4。使用 JDBC Driver 2.0 时必须将 JRE 1.4 升级至 JRE 5.0 或更高版本。在某些情况下,您可能需要重新编译应用程序,因为它可能与 JDK 5.0 或更高版本不兼容。有关详细信息,请参阅 Sun Microsystems 网站上的文档。
|
sqljdbc4.jar | sqljdbc4.jar 类库提供对 JDBC 4.0 的支持。它不仅包括 sqljdbc.jar 的所有功能,还包括新增的 JDBC 4.0 方法。 sqljdbc4.jar 类库要求使用 6.0 或更高版本的 Java 运行时环境 (JRE)。在 JRE 1.4 或 5.0 上使用 sqljdbc4.jar 会引发异常。
注意: 如果应用程序必须在 JRE 6.0 上运行,即使该应用程序不使用 JDBC 4.0 功能,也应使用
sqljdbc4.jar 。
|
SQL Server 要求
JDBC Driver 专为使用 SQL Server 2005 引入的功能而设计,但它也可以向后兼容 SQL Server 2000(包括 64 位版本)。
重要提示: Microsoft SQL Server JDBC Driver 2.0 可以连接到 SQL Server 2008,但不完全支持 SQL Server 2008 中新引入的数据类型或其他功能。
在 Windows 系统中部署 JDBC 驱动程序
在 Windows 操作系统中部署 JDBC 驱动程序时,必须使用安装包的可执行 zip 文件版本,其名称通常为 sqljdbc_<version>_enu.exe 。
若要无提示运行可执行 zip 文件,必须在命令行或批处理文件中使用 /auto 命令行选项,如下所示:
sqljdbc_<version>_enu.exe /auto
注意: 使用 /auto 选项时,执行的并不是真正的无提示安装,因为 WinZip 对话框仍会出现在用户屏幕中。然而,您无需与其进行交互,解压缩操作完成后,它会立即关闭。
在 UNIX 系统中部署驱动程序
在 UNIX 操作系统中部署 JDBC 驱动程序时,必须使用安装包的 gzip 文件版本,其名称通常为 sqljdbc_<version>_enu.tar.gz 。
在安装 JDBC 驱动程序前,请确保用户的系统中安装了 gzip 和 tar 实用程序,并已将包含这两个实用程序可执行文件的文件夹添加到了 PATH 环境变量中。
若要无提示运行 gzip 文件,请在命令行或批处理文件中使用 xfz 命令行选项,如下所示:
tar xfz sqljdbc_<version>_enu.tar.gz
注意: 使用 xfz 选项时,执行的并不是真正的无提示安装,因为某些警告可能会发送到标准输出。
选择正确的 JAR 文件
Microsoft SQL Server JDBC Driver 2.0 提供两个类库文件:sqljdbc.jar 和 sqljdbc4.jar ,具体使用哪个文件取决于首选的 Java 运行时环境 (JRE) 设置。
设置 Classpath
JDBC Driver 并未包含在 Java SDK 中。如果要使用该驱动程序,必须将 classpath 设置为包含 sqljdbc.jar 文件或 sqljdbc4.jar 文件。如果 classpath 缺少 sqljdbc.jar 项或 sqljdbc4.jar 项,应用程序将引发“找不到类”的常见异常。
sqljdbc.jar 文件和 sqljdbc4.jar 文件的安装位置如下:
<安装目录 >/sqljdbc_<版本 >/<语言 >/sqljdbc.jar
<安装目录 >/sqljdbc_<版本 >/<语言 >/sqljdbc4.jar
下面是用于 Windows 应用程序的 CLASSPATH 语句示例:
CLASSPATH =.;C:/Program Files/Microsoft SQL Server JDBC
Driver/sqljdbc_2.0/enu/sqljdbc.jar
下面是用于 Unix/Linux 应用程序的 CLASSPATH 语句示例:
CLASSPATH =.:/home/usr1/mssqlserverjdbc/Driver/sqljdbc_2.0
/enu/sqljdbc.jar
必须确保 CLASSPATH 语句仅包含一个 Microsoft SQL Server JDBC driver,例如 sqljdbc.jar 或 sqljdbc4.jar。
直接在命令提示符运行的应用程序
classpath 是在操作系统中配置的。将 sqljdbc.jar 或 sqljdbc4.jar 追加到系统的 classpath 中。或者,使用 java -classpath 选项,可以在运行此应用程序的 Java 命令行上指定 classpath。
在 IDE 中运行的应用程序
每个 IDE 供应商都提供了在 IDE 中设置 classpath 的不同方法。仅在操作系统中设置 classpath 将无法正常工作。必须将 sqljdbc.jar 或 sqljdbc4.jar 添加到 IDE classpath。
具体代码如下:
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class TestConnectionSqlserver {
public static void main(String [] args){
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
"databaseName=db_onlinetest;user=sa;password=admin;";
Connection con = DriverManager.getConnection(connectionUrl);
String sql = "select name from tb_user";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
System.out.println("name: "+rs.getString(1));
}
rs.close();
st.close();
con.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
注意jre的版本问题,最好不要使用eclipse自带的jre,用自己安装的。
报错问题
报错一:
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdlbc.SQLServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at test.TestConnectionSqlserver.main(TestConnectionSqlserver.java:11)
两种可能:
1.没有添加jar包。或者没有配置sqljdbc4.jar或sqljdbc.jar的
classpath。
2.Class.forName("com.microsoft."+
"sqlserver.jdbc.SQLServerDriver");
有错,检查有没有拼写错误。
报错二
Exception in thread "main" java.lang.UnsupportedClassVersionError:
Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at test.TestConnectionSqlserver.main(TestConnectionSqlserver.java:11)
出错原因:
jre版本问题,更换6.0或以上版本,不要使用myeclipse自带的jre。