前言
多年不用Microsoft SQL Server,简单回顾一下并记录一下在java中连接SQL Server的过程和注意事项。首先,从下载Driver开始。
Microsoft JDBC Drivers
官方的下载地址为:适用于 SQL Server 的 Microsoft JDBC Drivers 4.2、4.1 和 4.0
根据官方介绍,最新的Driver已经出到了4.2,它支持JDK1.8并兼容JDBC 4.2,下面是官方的介绍:
所有 SQL Server 用户都可以下载适用于 SQL Server 的 Microsoft JDBC Drivers 4.2、4.1 和 4.0,无需额外付费。同时,可从任何 Java 应用程序、应用程序服务器或支持 Java 的小程序访问 Microsoft SQL Server 2014、SQL Server 2012、SQL Server 2008 R2、SQL Server 2008、SQL Server 2005 和 SQL Azure。对于适用于 SQL Server 的 Microsoft JDBC Driver 4.2(预览版)和 4.1,将从 SQL Server 2008 开始支持。
需要注意的是4.2和4.1从SQL Server 2008才开始支持,这也就是意味着如果你使用的是SQL Server 2005,那么你只能下载Driver 4.0。
官方同时也列举了各版本的Driver和各版本的JDK的支持:
- JDBC Driver 4.2支持JDK 5.0、6.0、7.0和8.0
- JDBC Driver 4.1支持JDK 5.0、6.0、7.0
- JDBC Driver 4.0支持JDK 5.0、6.0
关于SQL Server的版本和Driver的版本的支持方面上面已经提过,就是SQL Server 2005只能使用Driver 4.0版本,而SQL Server 2008到2014均可使用4.0、4.1和4.2任意版本的Driver。需要注意的问题就这么多,接下来选择版本下载即可。
首先选择语言,点击下载按钮:
选择下载全部版本的文件,点击Next开始下载:
下载完成后我们可以看到我们的文件列表,包括windows版本和unix版本的3组文件(4.0、4.1和4.2):
最后通过安装即可获取到我们的jar包,接下来看一下安装过程。
Install JDBC Driver
安装其实就是一个解压的过程而已,我们需要的仅仅是驱动jar包,官方也给出了windows系统和unix系统中详细的安装说明:
用于 Microsoft Windows 版本的 JDBC Driver 安装说明
- 下载 sqljdbc__.exe 至一个临时目录。
- 运行 sqljdbc__.exe。
- 出现提示时,输入安装目录。建议您在 %ProgramFiles% 中解压缩该 zip 文件,并使用下面默认目录:”Microsoft JDBC Driver 4.x for SQL Server”。
用于 UNIX 版本的 JDBC Driver 安装说明
- 下载 sqljdbc__.tar.gz 至一个临时目录。
- 要解压缩压缩的 tar 文件,请先导航至您想要解压缩该驱动程序的目录,并键入 gzip -d sqljdbc__.tar.gz。
- 要解压缩 tar 文件,请先将其移至您想要安装该驱动程序的目录,并键入 tar –xf sqljdbc__.tar。
下面以安装4.0版本的为例,首先运行sqljdbc_4.0.2206.100_chs.exe,点击运行,
点击Unzip解压文件,
紧接着会提示解压成功,
然后在当前目录下我们就可以看到文件目录了,
最后进入目录很快就能找到我们的驱动jar文件了,
Java Test
最后建一个简单的Java项目,写一下jdbc的测试代码即可,还有关于一些常见的问题,例如:SQL Server的身份验证方式要设置为SQL Server身份验证而不能使用Windows身份验证,否则JDBC是无法登录的,下面是一段简单的测试类的代码:
package com.wl.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
public class Test {
private static final String SQLSERVER_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
// private static final String POSTGRESQL_DRIVER="org.postgresql.Driver";
private static final String SQLSERVER_URL = "jdbc:sqlserver://192.168.0.77\\ZKZS;databaseName=xian";
// private static final String POSTGRESQL_URL=
// "jdbc:postgresql://localhost:5432/testdb";
public static void main(String[] args) {
try {
Class.forName(SQLSERVER_DRIVER).newInstance();
String url = SQLSERVER_URL;
Connection con = DriverManager.getConnection(url, "sa", "sys");
Statement st = con.createStatement();
String sql = " select * from zkzs.table_1";
ResultSet rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
while (rs.next()) {
for (int i = 1; i <= columnCount; i++) {
System.out.print(rs.getString(i) + "\t");
}
System.out.println();
}
rs.close();
st.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在代码中需要注意的是URL,我这里用了数据库实例名代替了端口号,如果要写实例名格式是”IP地址+\实例名;“,如果是端口号的话写法不变,依然是”IP地址+冒号+端口号;“,还有一般开发用sa用户和默认的dbo模式即可,运行main方法可成功在控制台看到查询结果。
SQL Server with Maven
我们发现在Maven仓库中搜不到SQL Server,搜出来的只是TranQL的相关依赖,
没错,在Maven的不支持的部分库中,就包括Microsoft SQL Server JDBC,那么我们只能手动来安装它到我们的Maven私服或者本地仓库了。拷贝我们刚才下载的最新jar包(4.1)到一个目录,运行如下的mvn命令:
可以看到构建成功,接下来我们就可以在我们的Maven项目中使用我们指定的SQL Server依赖了,坐标如下:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc41</artifactId>
<version>4.1</version>
</dependency>
最后在我们项目的pom.xml中引入并确保没有任何报错即可,如下所示:
Tips About Navicat
最后还想啰嗦一点关于Navicat远程连接SQL Server的相关注意事项,同样的有两种方式来指定URL:实例名 or 端口号,实例名是通过一个反斜杠来分隔,而端口号是通过一个逗号来分隔,如下图所示:
总结
记录一下jdbc和SQL Server遇到的些许小问题,时隔多年再次接触微软的东西,颇有感概,仅供参考,The End。