目录
JDBC是什么
JDBC全称是Java Database Connectivity(Java数据库连接),是Java连接数据库的标准和规范。
JDBC的基本操作步骤
1.导入驱动包
https://downloads.mysql.com/archives/c-j/
2.加载驱动
1.Class.forName("xxx");
2.DriverManager.registerDriver(new Driver()); //重复加载
3.不显示加载驱动类
3.打开连接
4.获取预处理器
5.设置参数
6.执行SQL
7.解析结果
8.关闭连接
代码操作:
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn=null;
try {
conn = DriverManager.getConnection("jdbc:mysql:///test?serverTimezone=UTC", "root", "root");
String sql="create table test( ID INT PRIMARY KEY AUTO_INCREMENT,name varchar(255)";
PreparedStatement statement = conn.prepareStatement(sql);
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
conn.close();
};
什么是SQL注入
SQL注入是利用SQL拼接的特点而实现的一种攻击方式
SQL注入的案例
select * from t_user where name = 'werewrewrewe' and pwd = ' or 1=1';
防止SQL注入的方法
使用?占位符形式设置参数
防止SQL注入的原理
内部对参数进行了处理
JDBC中的核心对象
DriverManager:驱动管理(驱动的注册,打开连接)
Connection:连接(控制连接、处理事务)
PreparedStatement:设置参数、执行SQL
PreparedStatement和Statement的联系与区别?
联系:两者都是处理器对象,都是负责执行SQL语句,PreparedStatement是Statement的 子接口,拥有更丰富的API
两者区别:PreparedStatement可以防止SQL注入,Statement不可以
ResultSet:结果集(封装了查询语句中返回的所有数据)
1.获取结果数据
resultSet.getInt("id");
resultSet.getInt("id");
resultSet.getInt("id");
2.获取元数据
//获取元数据对象
ResultSetMetaData metaData = resultSet.getMetaData();
JDBC事务操作
1.设置手动提交
connection.setAutoCommit(false);
2.提交事务
connection.commit();
3.回滚事务
connection.rollback();