1. 前言
Java 数据库连接,或称为 JDBC(Java Database Connectivity),是一种用于执行 SQL 语句的 Java API,可以让 Java 应用程序访问各种关系数据库,如 Oracle、MySQL、DB2、Sybase、Microsoft SQL Server 等等。其中本文将介绍如何通过 JDBC 搭建一个 Microsoft SQL Server 数据库的链接。
2. 环境准备
2.1 Microsoft SQL Server
在开始之前,需要确保你已经拥有可供访问的 Microsoft SQL Server 数据库,并且知道该数据库的 URL、用户名和密码。同时需要确保该数据库实例已经启动并且可以被访问。
2.2 Java 环境
将要使用的 Java 环境至少需要包含以下两个组件:
JDBC 驱动程序:不同的数据库都有各自的驱动程序。在这里我们使用 Microsoft SQL Server 提供的官方 JDBC 驱动程序,可以从官方网站上下载。
JDK:Java 开发环境,由于 JDBC 是一个 Java API,需要使用 Java 语言进行编写。在这里我们使用 JDK 1.8 进行编写。
3. 搭建 JDBC 连接
3.1 导入 JDBC 驱动
首先需要将下载好的 JDBC 驱动程序导入到 Java 的 CLASSPATH 中。可以将该驱动程序直接拷贝到 Java 项目的 lib 目录下,或者将该驱动程序所在的目录添加到 Java 的 CLASSPATH 环境变量中,以便 Java 虚拟机能够找到该驱动程序。
我们可以通过如下代码来校验 JDBC 驱动是否已经导入成功:
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("JDBC driver loaded");
} catch (ClassNotFoundException ex) {
System.out.println("JDBC driver not found");
}
3.2 创建数据库链接
在这一步,我们需要使用 JDBC 驱动提供的 DriverManager 类来创建数据库链接。需要指定 Microsoft SQL Server 数据库的 URL、用户名和密码。
String url = "jdbc:sqlserver://localhost:1433;databaseName=myDatabase";
String user = "myUsername";
String password = "myPassword";
Connection conn = DriverManager.getConnection(url, user, password);
上述代码将创建一个链接到本地主机上的 Microsoft SQL Server 数据库实例,并且连接到名为 myDatabase 的数据库,使用 myUsername 和 myPassword 认证。
需要注意:
在上述代码中的 URL 中,sqlserver 后面的“:”和“//”是必须有的,1433 是 Microsoft SQL Server 的默认端口号,可以根据自己实际的端口号进行修改。
如果需要通过 SSL 加密方式来访问数据库,请在 URL 中添加 "encrypt=true",如此 Microsoft SQL Server 会尝试使用 SSL 加密链接。
在实际开发中,可以将数据库链接封装在一个 Util 类中,以便实现复用。
4. 数据库操作
4.1 执行查询
JDBC 可以使用 Statement 或 PreparedStatement 类来执行 SQL 查询语句。其中 PreparedStatement 可以防止 SQL 注入攻击,具有更好的安全性;而 Statement 对 SQL 语句进行编译后再执行,具有较好的性能表现。
以下代码演示如何使用 PreparedStatement 查询 student 表中的所有记录:
String query = "SELECT * FROM student";
PreparedStatement ps = conn.prepareStatement(query);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
}
在上述代码中,首先创建了一个 PreparedStatement 对象,并将要执行的 SQL 查询语句传入该对象中。然后使用 executeQuery() 方法执行该查询,并返回一个 ResultSet 对象。通过对 ResultSet 对象的遍历,可以获取查询结果中的每行记录。
4.2 执行更新
更新操作通常用于插入、更新和删除数据库中的记录。和查询不同,更新操作需要使用 Statement 或 PreparedStatement 中的 executeUpdate() 方法。
以下代码演示如何向 student 表中插入一条记录:
String insert = "INSERT INTO student(id, name, age) VALUES (?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(insert);
ps.setInt(1, 1);
ps.setString(2, "Tom");
ps.setInt(3, 20);
int result = ps.executeUpdate();
在上述代码中,首先创建了一个 PreparedStatement 对象,并将要执行的 SQL 更新语句传入该对象中。然后使用 setXXX() 方法设置 SQL 语句中占位符的值,其中 XXX 表示不同的 Java 类型,这里使用的是 setInt 和 setString 两种方法。最后,使用 executeUpdate() 方法执行更新操作,并返回更新影响的记录数。
5. 结束链接
当不再需要使用数据库链接时,应该优先释放所有与该链接相关的资源,包括 Statement、ResultSet 和 Connection 对象。可以按照以下代码对数据库链接进行操作:
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
在实际开发中,可以通过 try-with-resources 语句来自动释放资源,可以简化上述代码的编写:
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement ps = conn.prepareStatement(query);
ResultSet rs = ps.executeQuery()) {
// do something
} catch (SQLException ex) {
ex.printStackTrace();
}
6. 总结
JDBC 搭建 Microsoft SQL Server 链接可以简单地实现通过 Java 应用程序访问 Microsoft SQL Server 数据库的需求。本文简单介绍了如何通过 JDBC 驱动程序,通过 DriverManager 类创建连接,并对创建的连接进行了增删改查操作。在使用 JDBC 链接时需要注意一些事项,如将资源及时释放,防止 SQL 注入攻击等,这些内容需要在实际开发中逐步深入。