JDBC入门
简介
JDBC(Java DataBase Connectivity, Java数据库连接)使Java可以操作各种关系数据库。
JDBC的API在java.sql包中,主要的类和接口:
- DriverManager类:加载各种数据库驱动程序。(可以同时加载多个数据库的驱动程序)
- Connection接口:建立数据库连接。
- Statement, PreparedStatement, CallableStatement接口:用于处理增删改查。
- ResultSet:处理操作结果。
数据库的选择
因为JDBC操作数据库使用的是SQL语句,所以还是推荐使用关系型数据库,这里以MySQL为例:
- MySQL下载:https://dev.mysql.com/downloads/mysql/
- MySQL的JDBC驱动mysql-connector-javax下载:https://dev.mysql.com/downloads/connector/j/
至于JDBC操作MongoDB,可以关注此项目:https://github.com/erh/mongo-jdbc
JDBC操作数据库的步骤
传统的使用JDBC操作数据库的步骤是:
- 加载需要的JDBC驱动程序
- 建立与数据库的连接
- 通过SQL语句,执行增删改查
- 处理结果集
- 断开和数据库的连接
下面逐一介绍:
1.加载需要的JDBC驱动程序
Class.forName("驱动程序包名"); // 如果是MySQL,包名一般为com.mysql.cj.jdbc.Driver
2.建立与数据库的连接
Connection conn = DriverManager.getConnection(url) // jdbc:mysql://127.0.0.1:3306/servlet_db?serverTimezone=UTC
3.通过SQL语句,执行增删改查
查询需要先创建一个Statement对象,然后使用该对象执行SQL语句。
Statement对象有三种:
- Statement
- PreparedStatement
- CallableStatement
1 - 使用Statement:
Statement stmt = conn.createStatement(); ResultSet results = stmt.executeQuery("SQL查询语句"); stmt.executeUpdate("SQL增删改语句");
2 - 使用PreparedStatement:
预编译SQL语句,适合重复执行SQL语句的场合。
PreparedStatement prepStmt = conn.prepareStatement("SQL语句"); // 对SQL语句预编译 ResultSet results = prepStmt.executeQuery(); // 执行查询使用executeQuery() prepStmt.executeUpdate(); // 执行更新使用executeUpdate()
这里可以使用【带参数的SQL语句】,其中参数用?表示。例如:
PreparedStatement ptmt = conn.prepareStatement("UPDATE servlet_db.users SET userID = ? WHERE username = ?"); ptmt.setInt(1, 16427); // 设置第一个参数 ptmt.setString(2, "ValdisW"); // 设置第二个参数 ptmt.executeUpdate(); // 执行更新
3 - 使用CallableStatement:
CallableStatement callStmt = conn.prepareCall(); callStmt.setInt(1, 123); callStmt.setInt(2, 456); callStmt.execute();
4.处理结果集
这里以打印为例:
while(results.next()){ System.out.println(results.getInt(1)); System.out.println(results.getString(2)); }
5.断开和数据库的连接
results.close(); // 关闭ResultSet对象 stmt.close(); // 关闭Statement对象 conn.close(); // 关闭Connection对象