JDBC
数据库驱动
sun公司为了简化开发人员对数据库的统一操作,提供了一个(Java操作数据库)的规范,俗称JDBC,规范的具体实现由厂商去做,开发人员只需要掌握JDBC接口就行
JDBC连接:
public class JdbcFirstDemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.用户信息和url
//useUnicode=true&characterEncoding=utf8&useSSL=true
String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
String username = "root";
String password = "123";
//3.连接成功,数据库对象 Connection 代表数据库
Connection connection = DriverManager.getConnection(url, username, password);
//4.执行SQL的对象
Statement statement = connection.createStatement();
//5.执行SQL的对象 去 执行SQL
String sql = "SELECT * FROM users";
ResultSet resultSet = statement.executeQuery(sql); //返回的结果集
while (resultSet.next()) {
System.out.println("id=" + resultSet.getObject("id"));
System.out.println("NAME=" + resultSet.getObject("NAME"));
System.out.println("PASSWORD=" + resultSet.getObject("PASSWORD"));
System.out.println("email=" + resultSet.getObject("email"));
System.out.println("birthday=" + resultSet.getObject("birthday"));
}
//6.释放连接
resultSet.close();
statement.close();
connection.close();
}
}
SQL注入
- sql存在漏洞,会被攻击导致数据泄露
数据库连接池
数据库连接 — 执行完毕 — 释放
连接–释放非常浪费系统资源
池化技术:准备一些预先的资源,过来就连接预先准备好的
----开门–业务员:等待 – 服务----(例子 生活中场景)
常用连接数:10
最小连接数:10
最大连接数:15 业务最高承载上限
排队等待,
等待超时:100ms
编写连接池,实现一个接口 DataSource
开源数据实现
DBCP
C3P0
Druid:阿里巴巴
使用了数据库连接池后,在项目开发中不需要编写连接数据库的代码
DBCP:
需要用到jar包