核心API
注册驱动
- Class.forName(“com.mysql.cj.jdbc.Driver”);
- 在Java中,当使用JDBC连接数据库时,需要加载数据库特定的驱动程序,以便与数据库进行通信,加载驱动程序的目的是为了注册驱动程序,使得JDBC API能够识别并与特定的数据库进行交互
- 从JDK6开始,不需要显式地调用Class.forName()来加载JDBC驱动程序,只要在路径中集成了对应的jar文件,会自动在初始化时注册驱动程序。

Connection
- Connection接口是JDBC API的重要接口,用于建立与数据库的通信通道,Connection对象不为空,则代表一交数据库连接
- 在建立连接时,需要指定数据库URL、用户名、密码参数
- URL:jdbc:mysql://192.168.29.201:3306/jdbc
- URL:jdbc:mysql://IP地址:端口号/数据库名?参数键值对1&参数键值对2
- Connection接口还负责管理事务,Connection接口提供了commit和rollback方法,用于事务提交和回滚
- 在使用JDBC技术时,必须先获取Connection对象,使用完毕后,要释放资源,避免资源占用造成泄露
Statement
- Statement接口用于执行SQL语句并与数据库进行交互,它是JDBC API一个重要接口,通过Statement对象,可以向数据库发送SQL语句并获取执行结果
- 结果可以是一个或多个结果
- 增删改:受影响行数单个结果
- 查询:单行单列,多行多列,单行多列等结果
- Statement接口在执行SQL语句时,会产生SQL注入攻击问题
- 不使用Statement执行动态构建的SQL查询时,往往需要将查询条件与SQL语句拼接在一起,直接将参数和SQL语句一并生成,让SQL的查询条件始终为true得到结果
public class JDBCInjection {
public static void main(String[] args) throws SQLException {
String url = "jdbc:mysql://192.168.29.201:3306/jdbc";
String username = "root";
String password = "Lotus!1120";
Connection conn = DriverManager.getConnection(url, username, password);
Statement statement = conn.createStatement();
System.out.println("Please input your emp_name:");
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
String statement_sql = "select * from jdbc.t_emp where emp_name='" + name +"'";
System.out.println(statement_sql);
ResultSet rs = statement.executeQuery(statement_sql);
while (rs.next()) {
int emp_id = rs.getInt("emp_id");
String emp_name = rs.getString("emp_name");
double emp_salary = rs.getDouble("emp_salary");
int emp_age = rs.getInt("emp_age");
System.out.println(emp_id + "\t" + emp_name + "\t" + emp_salary + "\t" + emp_age);
}
rs.close();
statement.close();
conn.close();
}
Please input your emp_name:
abc' or '1'='1
select * from jdbc.t_emp where emp_name