JDBC的概述
jdbc入门
jdbc的api使用
jdbc的资源释放
jdbc的crud操作 增删改查操作
jdbc工具类的抽取
jdbc的preparedstatement
jdbc的概述
全称:Java database connectivity (Javau数据库连接)
jdbc的入门:
搭建开发环境
编写程序,在程序中加载数据库驱动
建立连接
创建用于向数据库发送的sql的statement对象
从代表结果集的resultset中取出数据
断开与数据库的连接,并释放相关资源。
创建数据库,表,插入数据:
create database jdbctest;
use jdbctest;
create table user(
uid int primary key auto_increment,
username varchar(20),
password varchar(20),
name varchar(20)
);
插入数据:
insert into user values (null,’aaa’,’111’,’张三’);
insert into user values (null,’bbb’,’222’,’李四’);
insert into user values (null,’ccc’,’333’,’王五’);
Junit是一个单元测试工具,目前在我们的eclipse、idea都可以进行使用
作用:
简化单元测试,写一点测试一点,能够快速定位追踪问题的所在
@Test:测试方法
解释:加了注解的方法可以像主方法一样使用
DriverManager:驱动管理类
主要作用:
注册驱动
实际开发中注册驱动会使用如下方式:
Class.forName(“com.mysql.jdbc.Driver”);
因为之前的加载驱动方式会导致驱动被注册2次
获得连接
Connection conn = DriverManager.getConnection(String url,String username,String password);
url jdbc:mysql://localhost:3306/jdbctest(数据库名字)
jdbc 协议
mysql 子协议
localhost 主机名/127.0.0.1
3306 端口号
url简写:jdbc:mysql:/// jdbctest
Connection 连接对象
主要作用:
创建执行sql语句的对象
Statement createStatement() 执行sql语句,有sql注入的漏洞
preparedstatement preparestatement(String sql) 预编译sql语句 很好的解决sql注入的漏洞
CallableStatement prepareCall(String sql) 执行sql中的存储过程
进行事务的管理
setAutoCommit (Boolean autoCommit) 设置事务是否自动提交
commit() 事务提交
rollback() 事务回滚
Statement 主要就是用来执行sql语句的
主要作用:
执行sql语句
boolean execute(String sql) 执行sql,执行select 语句返回true 否则false
ResultSet executeQuery(String sql) 执行sql中的select语句
int executeUpdate(String sql) 执行sql中的delete insert update语句
执行批处理
addBatch(String sql) 添加到批处理的操作
executeBatch() 执行批处理
clrearBatch() 清空批处理
resultset结果集封装的是select 查询到的数据
resultset结果集
结果集:其实就是查询语句(select)查询的结果的封装
主要作用:
结果集获取查询到的结果。
next() 是否存在下一行数据,如果存在的话就查询出来
针对不同的类型的数据可以使用getxxx获取数据,通过获取的方法:getObject();
jdbc的资源释放
程序运行完,切记在运行中释放资源,
要释放的资源:和数据库有交互的对象
ResultSet
Statement
Connection
为什么要释放?特别是connection对象,是非常稀有的资源
如果不释放:导致系统的宕机
尽量晚创建
尽量早释放
JDBC的CRUD操作
1、向数据库保存记录 insert
2、修改数据库记录的操作;update
3、删除数据库记录的操作 :delete
查询时最难的:
先查询所有记录
再查询一条记录
jdbc工具类的抽取
jdbc的sql注入漏洞
sql注入漏洞的解决
preparedStatement是 Statement的子接口
preparedStatement的使用 对sql进行预编译
保存操作
修改数据
删除数据
查询数据
C3p0数据库连接池使用
c3p0连接池比较常用的,开源的,需要引入jar包