本文共 3424 字,大约阅读时间需要 11 分钟。
Java Database Connectivity (JDBC) 是 Java 编程语言用于访问 relational数据库的标准规范。通过 JDBC,Java 程序可以与数据库建立连接,并执行 CRUD 操作(Create, Read, Update, Delete)。JDBC 操作数据库的核心流程包括注册驱动、获取连接、执行 SQL 语句以及处理结果集。
JDBC 的核心包括四个主要对象:
DriverManager
用于注册数据库驱动。通过Class.forName("com.mysql.jdbc.Driver")
加载驱动类。Connection
表示与数据库的连接。通过DriverManager.getConnection(url, user, password)
获取连接。Statement
执行 SQL 语句的对象。通过Connection.createStatement()
获取。ResultSet
用于存储查询结果的结果集。数据库驱动由数据库厂商提供,JDBC 提供了两种注册驱动方式:
静态方法注册
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
动态加载
Class.forName("com.mysql.jdbc.Driver");
数据库连接 URL 格式为:
jdbc:mysql://localhost:3306/数据库名
常见情况:
jdbc:mysql:///day24
jdbc:mysql://myinstance.cloud.databank.com/day24
步骤:
Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/day24", "root", "root");
操作类型对应的 Statement 方法:
execute(String sql)
: 用于查询(返回 ResultSet)。executeUpdate(String sql)
: 用于增删改(返回空 ResultSet)。Statement stmt = conn.createStatement();stmt.executeUpdate("INSERT INTO category VALUES('手机')");
stmt.executeUpdate("DELETE FROM category WHERE id=1");
stmt.executeUpdate("UPDATE category SET name='汽车' WHERE id=4");
ResultSet rs = stmt.executeQuery("SELECT * FROM category");while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("ID: " + id + ", Name: " + name);}
注意事项:
rs.next()
获取行数据前,确保指针已经移动到正确的线性位置。Connection conn = DriverManager.getConnection(url, user, password);conn.setAutoCommit(false);
conn.commit();
conn.rollback();
public class JDBCUtils { private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql:///day24"; private static final String USER = "root"; private static final String PASSWORD = "root"; static { try { Class.forName(DRIVER_CLASS); } catch (ClassNotFoundException e) { // Driver 类会主动注册 } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); } public static void close(AutoCloseable... resources) { for (AutoCloseable resource : resources) { try { resource.close(); } catch (SQLException e) { e.printStackTrace(); } } }}
用户输入账号和密码,通过 JDBC 查询数据库验证。
public class LoginDemo { public static void main(String[] args) throws SQLException { Scanner scanner = new Scanner(System.in); System.out.println("username: "); String username = scanner.nextLine(); System.out.println("password: "); String password = scanner.nextLine(); Connection conn = JDBCUtils.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery( String.format( "SELECT * FROM user WHERE username='%s' AND password='%s';", username, password ) ); if (rs.next()) { System.out.println("欢迎 " + username + " 登录!"); } else { System.out.println("账号或密码错误,登录失败。"); } JDBCUtils.close(conn, stmt, rs); }}
转载地址:http://iyuiz.baihongyu.com/