文章目录
一、数据库JDBC
1.1 DriverManger
从驱动包中注册驱动
Class.forname(“com.jdbc.mysql.DriverManger”);
如果是本机的3306版本,则可以将url设置为
String url = "jdbc:mysql:///db1?useSSL=false";
1.2 Connection
Connection有两种功能:
- 获取SQL对象
- 管理事务:在JAVA里,可以用try catch 异常处理机制来管理异常
1.3 Statement
执行SQL语句
DML、DDL:
int execute Update(sql) # 返回DML语句影响的行数,DDL成功可能返回
String sql1="update set ... ";
int count = statement.executeUpdate(sql1); //DML,受影响的行数
if(count>0){
# success
}else{
# fail
}
String sql2 = "create database db2"; //DDL, count=1
String sql2 = "drop database db2"; //DDL,count=0,所以DDL查询可能为0
1.4 ResultSet
resultset statement.executeQuery(sql); #执行DQL语句,
result中包含游标,会先判断当前行是否有效
boolean next(); #往下走判断是否有效
int getxxx(参数); # 获取数据
String getString(参数); # 参数可以是int:列的编号,从1开始,String 列的名称
while(rs.next()){
rs.getxxx(参数);
}
定义一个pojo包查询实体
public class Accout {
private int id;
private String name;
private double math;
# 自动生成set、get方法、toString alt+insert
List<Accout> list = new ArrayList<>(); # 生成对象放到list集合中,对集合遍历就能取出所有对象
while(re.next()){
Accout accout = new Accout();
int id = re.getInt("id");
String name = re.getString("name");
Double math = re.getDouble("math");
accout.setId(id);
accout.setName(name);
accout.setMath(math);
list.add(accout);
}
1.5 PreparedStatement
继承statement,用于预防SQL注入的问题,以防止服务器被攻击
- 预编译SQL,性能更好
- 将敏感字符进行转义
开启预编译:useServerPrepStmts=true
如果sql模板一样,只需要进行一次检查,就可以多次快速执行
int id = 3 ;
String name = "masan";
String sql = "select * from stu2 where id = ? and name = ?"; # 占位符
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
pstmt.setString(2, name);
ResultSet re = pstmt.executeQuery();
if(re.next()){
System.out.println("success~");
}else {
System.out.println("fail~");
}
二、数据库连接池
- 数据库连接池是个容器,负责分配、管理
- connection 资源复用,提高响应速度
- 避免连接遗漏,强制connection归还
标准接口:DataSource
Druid(德鲁伊)由阿里开发,功能优秀
// 1.jar导入导入文件夹
// 2.properties导入文件夹
// 3.加载配置文件相当于yaml包
Properties properties = new Properties();
properties.load(new FileInputStream("jdbc-module-demo/src/druid.properties"));
// 4.连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
// 5.获取数据库连接
Connection connection = dataSource.getConnection();