JDBC 链接 SQL SERVER 详解
来源:互联网 发布:linux查看编码方式 编辑:程序博客网 时间:2024/05/16 17:19
首先从www.microsoft.com下载JDBC Driver。
为了支持向后兼容以及可能的升级方案,JDBC Driver 2.0 在每个安装包中都包括 2 个 JAR 类库:sqljdbc.jar 和 sqljdbc4.jar。
sqljdbc.jar
sqljdbc.jar 类库提供对 JDBC 3.0 的支持。
sqljdbc.jar 类库要求使用 5.0 版的 Java 运行时环境 (JRE)。连接到数据库时,在 JRE 6.0 上使用 sqljdbc.jar 会引发异常。
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 会引发异常。
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。
- JDBC 链接 SQL SERVER 详解
- JDBC 链接 SQL SERVER 详解
- jdbc数据库链接(sql server)
- jtds 通过 jdbc 来链接 SQL Server
- JDBC链接Sql Server数据库常见错误
- JDBC连接SQL Server 2005详解
- 详解SQL Server如何链接远程MySQL
- JDBC链接sql server数据库遇到的问题和解决方法
- elipse+tomcat插件+jsp通过jdbc链接sql server
- JDBC链接Sql数据库
- JDBC链接SQL 2005
- JDBC链接SQLServer详解
- 用JDBC直连方式访问SQL Server 2005详解
- SQL Server 2008 安装、配置、连接JDBC全过程详解
- 用JDBC直连方式访问SQL Server 2005详解
- sql server jdbc
- SQL Server 2000 JDBC
- jdbc连接sql server
- Java注意点
- java 动态代理深度学习(Proxy,InvocationHandler),含$Proxy0源码
- HTC G7 desire欲望 上网彩信设置(其它android手机通用)
- 灰太狼与红太狼抓羊 - 记一次应用云测试经历
- JSF - Oracle Javaserver Faces 简介 — 什么是 JSF?
- JDBC 链接 SQL SERVER 详解
- 第一次来这个站
- 说一下你眼中的Android的优点和不足之处(面试华为的人有被问过)!!!
- 新的一天
- 一个“回”型数字的程序
- 学习~!多谢智勇~!
- 一道关于字符串匹配的思考题
- 受人欢迎的四句话
- 关于mysql卸载 【转】