JDBC(Java Database Connectivity)是Java中用于连接和操作数据库的标准API。它提供了一种统一的方式来访问各种类型的数据库,包括关系数据库、对象数据库和文本数据库等。以下是使用JDBC连接数据库的基本步骤:
- 加载数据库驱动 :
在使用JDBC之前,需要加载相应的数据库驱动。通常可以通过Class.forName()
方法来实现。例如,对于MySQL数据库,可以使用以下代码加载驱动:
Class.forName("com.mysql.cj.jdbc.Driver");
- 建立连接 :
使用DriverManager.getConnection()
方法建立与数据库的连接。需要提供数据库URL、用户名和密码。例如:
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
Connection conn = DriverManager.getConnection(url, username, password);
System.out.println("连接数据库成功!");
- 关闭连接 :
在完成数据库操作后,记得关闭连接以释放资源。可以使用try-finally
块来确保连接被关闭:
try {
// 数据库操作代码
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
- 使用Statement、PreparedStatement和ResultSet :
JDBC主要用到三个接口:Statement
、PreparedStatement
和ResultSet
。
-
Statement :用于执行非预编译的SQL语句。
-
PreparedStatement :用于执行预编译的SQL语句,可以提高性能并防止SQL注入。
-
ResultSet :用于存储查询结果,可以逐行读取数据。
示例代码
以下是一个完整的示例,展示了如何使用JDBC连接MySQL数据库并执行简单的查询:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCDemo {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// 1. 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 建立连接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
// 3. 创建Statement对象
stmt = conn.createStatement();
// 4. 执行查询
String sql = "SELECT id, name FROM users";
ResultSet rs = stmt.executeQuery(sql);
// 5. 处理结果
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 6. 关闭资源
try {
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
建议
-
使用连接池 :对于高并发应用,建议使用数据库连接池(如HikariCP、C3P0等)来管理数据库连接,以提高性能和资源利用率。
-
异常处理 :确保在代码中正确处理所有可能的异常,包括
ClassNotFoundException
、SQLException
等。 -
资源管理 :始终确保在使用完数据库连接、语句和结果集后及时关闭它们,以避免资源泄漏。