今天拿起Java本想学一下链接数据库,没想到这么难。链接一个数据库居然还要下载一个JDBC,这是比Visual Studio费劲多了。之中我还遇到了许多问题,但周折之后,晚上我最终克服了难题。上网查帖子,上Google查技术文章,虽然还是有一些帮助,但都解决不了问题。最后我还是在攻读了JDBC的技术文档后才最终解决了连不上数据库的问题。
好,废话少说。我这就和大家分享我的胜利果实。
1. 准备
我的系统中是安装了JDK 6和Eclipse的,还有就是我提前安装了SQL Server 2005 Express,SQL Server Management Studio Express。通过使用SQL Server Management Studio Express我创建了数据库wulei,并建立了表person。表中数据如下:
1 | Jim |
2 | Pussy |
有了关于Java的软件,有了数据库的软件,还少一个就是JDBC。于是我到微软官方网站上下载了最新版本的JDBC 1.2( 2008-1-15 )。
总之,所需软件列表如下:
软件名称和版本 | 描述 |
Java SDK 6 | Java开发工具包 |
Eclipse 3 | Java开发IDE |
SQL Server 2005 Express | 数据库配置工具 |
SQL Server Management Studio Express | 数据库管理工具 |
Microsoft SQL Server 2005 JDBC Driver 1.2 | JDBC |
2. 安装JDBC
首先将下载的sqljdbc_1.2.2828.100_chs(即Microsoft SQL Server 2005 JDBC Driver 1.2中文版)解压缩到C:/Program Files/Microsoft SQL Server 2005 JDBC Driver
提示:由于本文针对的是Eclipse中使用JDBC,因此请不要依照网上的配置ClassPath的步骤去做。因为在这里配置ClassPath是不必要的。
3. 在Eclipse中配置JDBC
选择菜单Project>Properties,选择Java Build Path,点击按钮Add External JARs…后在打开的对话框中选择sqljdbc.jar文件。然后就会看到sqljdbc.jar被加进去了。
因为我采用的是Windows集成认证,而不是如同username=sa;passwd=’ 123456’ 这样的SQL网络认证,因此我还要做一件事情就是将sqljdbc_auth.dll文件复制到项目文件夹中。Sqljdbc_auth.dll位于C:/Program Files/Microsoft SQL Server 2005 JDBC Driver/sqljdbc_1.2/chs/auth/x86文件夹下。复制到项目文件夹下后,就会看到:
4. 写程序代码
下面我在Test项目中新建了connectURL.java文件,代码如下:
import java.sql.*; publicclass connectURL { public static void main(String[] args) { // Create a variable for the connection string. String connectionUrl = "jdbc:sqlserver://localhost:1433;integratedSecurity=true;databaseName=wulei;"; // Declare the JDBC objects. Connection con = null; Statement stmt = null; ResultSet rs = null; try { // Establish the connection. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); con = DriverManager.getConnection(connectionUrl); // Create and execute an SQL statement that returns some data. String SQL = "SELECT TOP 10 * FROM person"; stmt = con.createStatement(); rs = stmt.executeQuery(SQL); // Iterate through the data in the result set and display it. while (rs.next()) { System.out.println(rs.getString(1) + " " + rs.getString(2)); } } // Handle any errors that may have occurred. catch (Exception e) { e.printStackTrace(); } finally { if (rs != null) try { rs.close(); } catch(Exception e) {} if (stmt != null) try { stmt.close(); } catch(Exception e) {} if (con != null) try { con.close(); } catch(Exception e) {} } } }