JDBC基础

JDBC (java database connection)

java的数据库连接

连接步骤

1.引入jar文件

2.加载数据库驱动(javase项目可以省略)

在这里插入图片描述
mysql 6.0以后的版本,Driver存在在com.mysql.jdbc.cj.Driver文件内

3. 通过驱动管理器,获得jdbc连接对象

jdbc:mysql://地址:端口号/库名 , 用户名,密码;
在这里插入图片描述
为了避免乱码 也可加上编码
在这里插入图片描述

4.通过连接对象 创建SQL执行对象(SQL执行环境)

在这里插入图片描述
使用 Statement没办法解决SQL的注入问题
可用预编译解决

5.通过执行对象执行SQL语句

在这里插入图片描述

6.释放资源(切记)

在这里插入图片描述
整体如下
在这里插入图片描述

特别的

state.execute() 返回boolean类型 但不表示语句是否执行成功 而是代表是否执行查询语句;

查询成功与否 使用 state.executeupdate() 返回Int 类型,表示影响的行数
(如果零就是失败)
在这里插入图片描述

对于 查询语句在这里插入图片描述

re.next 和迭代器类似, 由 游标 指向下一个数据,如果下一行没有返回false
有返回true

get后加类型 如 getInt getDate 等,() 里面加获取的字段名

最后ResultSet 也需要释放

SQL 预编译——Preparedstatement

解决SQL的注入问题
把statement 中excute中的语句写在preparstatement里 并且where参数换成 ? 并在后面 通过 set+类型设置参数 参数前Int类型表示第几个?号的参数
在这里插入图片描述

和statement相比性能并不比后者高,但解决了注入问题

java中的事务

开始

java中SQL都是自动提交 使用事务需要把自动提交关闭
连接对象.setAutocommit(false);
在这里插入图片描述

回滚

如果发生异常或者其他导致失败 可以在finnally里回滚 (也可以不)
连接对象。rollback();

提交

连接对象。commit();

java事务和数据库类似 也会发生,脏读,不可重复读,幻读。

查看数据库当前的隔离级别:

select @@tx_isolation;

数据库设置隔离级别:

set global transaction isolation level 级别字符串;(一般不修改)

批处理

statement

对于statement
在这里插入图片描述

对于prepraedstatement

在这里插入图片描述

连接池(DataSource)

和线程池类似 需要数据连接时直接从连接池中获取空闲连接

DBCP连接池

1:引入jar文件

2:引入配置文件(properties文件)

在这里插入图片描述
没有密码就空着 写 “” 会登不进数据库 会把 “” 当成密码
格式如图 直接粘贴到src文件下

3. 从配置文件获得配置对象

先获取输入流 然后加载

4.通过连接池的工厂类(BasicDataSourceFactory)的创建连接池的方法(createDataSource())

5.从连接池中 获取连接对象

在这里插入图片描述

德鲁伊连接池

在这里插入图片描述
在这里插入图片描述
飘红不是异常 只是日志

数据连接池工具类

为了减少代码量 方便连接 提供一个数据连接池的工具类,使用连接时 只需要使用获取连接方法

以 Druid 连接池为例
在这里插入图片描述
在这里插入图片描述

然后直接使用这个工具类在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值