JDBC就是使用Java语言操作关系型数据库的一套API

JDBC简介
JDBC概念:
JDBC就是使用Java语言关系型数据库的一套API
全称:(Java DataBase Connectivity)Java数据库连接
好处:
各数据库厂商使用相同的接口,Java代码不需要针对不同数据分别开发
可随时替换底层数据库,访问数据库的Java代码基本不变
JDBC快速入门
0.创建工程,导入驱动jar包
1.注册驱动
Class.forName("com.mysql.jbdc.Driver");
2.获取连接
Connection conn = DriverManager.getConnection(url,username,password);
3.定义SQL语句
Sting sql = "update...";
4.获取执行对象SQL对象
Statement stmt = conn.createStatement();
5.执行SQL
stmt.executeUpdate(sql);
6.处理返回结果
7.释放资源
JDBC API 详解
DriverManager
作用:
1.注册驱动 Class.forName("com.mysql.jbdc.Driver"); 可省略不写
2.获取数据库连接
static Connection getConnection(String url,String user, String password)
参数:
①url:连接路径
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数值键值对1&参数值键值对2...
细节:
如果连接的是本机musql服务器,并且mysql服务器默认端口是3306,则url可以简写为:jdbd:mysql:///数据库名称?参数键值对
配置useSSL=false参数,禁用安全连接方式,解决警告提示
②user:用户名
③password:密码
Connection
作用:
1.获取执行SQL对象
普通执行SQL对象
State createStatement()
预编译SQL的执行SQL对象:防止SQL注入
PrepareStatement prepareStatement(sql)
执行存储过程的对象
CallableStatement prepareCall(sql)
2.管理事务

Statement
作用:
1.执行SQL语句

ResultSet
1.封装了DQL查询语句的结果
ResultSet stmt.executeQuery(sql):执行DQL语句,返回ResultSet对象
获取查询结果

使用步骤:
1.游标向下移动一行,并判断该行是否有数据:next()
2.获取数据:getXxx(参数)

PreparedStatement
作用:预编译SQL语句并执行:预防SQL注入问题

SQL注入:SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法
PreparedStatement原理:
好处:1.预编译SQL,性能更高 2.防止SQL注入:将敏感字符进行转义
①PreparedStatement 预编译功能开启: userServerPrepStmts=true
②配置MySQL执行日志(重启mysql服务后生效)

PreparedStatement原理:
1.在获取PreparedStatement对象时,将sql语句发送给musql服务器进行检查,编译(这些步骤很耗时)
2.执行时就不用再进行这些步骤了,速度更快
3.如果sql模板一样,则只需要进行一次检查、编译
数据库连接池
数据库连接池简介
数据库连接池是个容器,负责分配、管理数据库连接(Connection)
它允许应用程序重复使用一个现有的数据库来连接,而不是再重新建立一个
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
好处:
资源重用
提升系统影响速度
避免数据库连接遗漏
数据库连接池实现
标准接口:DataSource
官方提供的数据库连接池标准接口,由第三方组织实现此接口
功能:获取连接
Connection getConnection()
常见的数据库连接池:
DBCP C3P0 Druid
Druid(德鲁伊)
Druid连接池是阿里巴巴开源的数据库连接池项目
功能强大,性能优秀,是Java语言最好的数据库连接池之一