本文最后更新于 425 天前,其中的信息可能已经过时,如有错误请发送邮件到 wuxianglongblog@163.com
JDBC 是 Java 数据库连接的简称。它是 Java 语言中用于访问关系型数据库的 API,提供了一套标准的接口,使得 Java 应用程序能够与各种关系型数据库进行通信。
在程序运行之前,需要将 JDBC 驱动程序加载到内存中。可以使用 Class.forName () 方法加载驱动程序。例如,如果要使用 MySQL 数据库,则需要加载 com.mysql.jdbc.Driver 类。
| Class.forName("com.mysql.jdbc.Driver"); |
使用 DriverManager.getConnection () 方法建立与数据库的连接。需要提供数据库的 URL、用户名和密码。
| String url = "jdbc:mysql://localhost/test"; |
| String user = "root"; |
| String password = "123456"; |
| Connection conn = DriverManager.getConnection(url, user, password); |
创建一个 Statement 对象,用于向数据库发送 SQL 语句。
使用 Statement 对象的 executeQuery () 或 executeUpdate () 方法执行 SQL 语句。
executeQuery () 方法用于执行 SELECT 语句,返回一个 ResultSet 对象,而 executeUpdate () 方法用于执行 INSERT、UPDATE 和 DELETE 语句,返回一个整数,表示受影响的行数。
| ResultSet rs = stmt.executeQuery("SELECT * FROM student"); |
如果执行的是 SELECT 语句,那么需要处理返回的结果集。可以使用 ResultSet 对象的 next () 方法遍历结果集,并使用 getXXX () 方法获取每个字段的值。
| 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); |
| } |
使用 Connection、Statement 和 ResultSet 对象的 close () 方法关闭连接。
| rs.close(); |
| stmt.close(); |
| conn.close(); |
| import java.sql.*; |
| |
| public class JdbcDemo { |
| public static void main(String[] args) throws Exception { |
| |
| Class.forName("com.mysql.jdbc.Driver"); |
| |
| |
| String url = "jdbc:mysql://localhost/test"; |
| String user = "root"; |
| String password = "123456"; |
| Connection conn = DriverManager.getConnection(url, user, password); |
| |
| |
| Statement stmt = conn.createStatement(); |
| |
| |
| ResultSet rs = stmt.executeQuery("SELECT * FROM student"); |
| |
| |
| 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); |
| } |
| |
| |
| rs.close(); |
| stmt.close(); |
| conn.close(); |
| } |
| } |
在实际开发中,建议使用 PreparedStatement 对象代替 Statement 对象,以防止 SQL 注入攻击。PreparedStatement 对象可以使用 Connection.prepareStatement () 方法创建。
| PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM student WHERE name = ?"); |
| pstmt.setString(1, "张三"); |
| ResultSet rs = pstmt.executeQuery(); |