JDBC学习笔记

JDBC

资料来自优极限

学习目标

在这里插入图片描述

JDBC

JDBC: java database connectivity
JDBC是一种用于数据库访问的 API ,由一组用Java语言编写的类和接口组成,有了JDBC就可以用统一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异,存储在 java.sql.*; 包下。

在这里插入图片描述
图片转自:
https://blog.csdn.net/hyf24/article/details/124494094

角色分类

  • 服务器 (db)
    • 接收 sql
    • 执行 sql
    • 返回结果
  • 客户端 (java)
    • 接收数据
    • 组装sql
    • 发送SQL(与数据库建立联系)
    • 分析结果

面向接口编程

1、java 制定标准 ,不同的数据库厂商实现 接口即可。java 中提供的接口 java.sql.* 包下,常用接口如下

接口名称作用
java.sql.Connection连接
java.sql.Statement静态处理块
java.sql.PreparedStatement预处理块
java.sql.ResultSet结果集
java.sql.ResultSetMetaData结果集元信息

2、oracle 厂商实现接口 (jar)

F:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar 视安装路径而定

jdbc步骤

类比送快递JDBC步骤
1、选择快递公司加载驱动(完整路径)
2、与快递公司建立联系(电话号码 唯一信息)建立连接(url 用户名 密码)
3、快递员 收包裹创建处理块 Statement PreparedStatement
4、打包 投递执行: execute(ddl) int executeUpdate(dml) ResultSet executeQuery(select)
5、签收分析结果 :ddl -->没有异常 dml—>>0 select–>分析结果集
6、打发走人释放资源

核心为拼接SQL、分析结果、操作结果

连接

准备工作

  • 引入驱动包
  • 构建路径 build path
  • 测试用户是否正确登录

建立连接

连接字符串

驱动: oracle.jdbc.driver.OracleDriver

url: jdbc:oracle:thin:@db 服务器地址:端口:实例

​ 连接 url->jdbc:oracle:thin:@localhost:1521:XE

用户名: SCOTT

密码: TIGER

编写测试类

加载驱动

  • 硬编码: new oracle.jdbc.driver.OracleDriver();
  • 软编码: class.forName(“oracle.jdbc.driver.OracleDriver”)

建立连接

Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","SCOTT ","TIGER");

处理块

静态处理块Statement

Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的 SQL 语句。Statement 对象,用于执行不带参数的简单 SQL 语句。

执行静态 SQL 语句并返回它所生成结果的对象。

创建 :

​ 连接.Connection.createStatement()

执行

​ ddl -->execute(dd语句) – 通常不会在代码中执行

​ dml -->executeUpdate(dml语句)

​ select -->executeQuery(select)

特点

​ 处理 不变的静态的 sql 语句

​ 优点: 直接查看sql ,方便处理错误

​ 缺点:性能不高 拼接 sql 麻烦 可能存在 sql 注入

预处理块 PreparedStatement

PreparedStatement 接口继承了 Statement,并与之在两方面有所不同:有人主张,在 JDBC 应用中,如果你已经是稍有水平开发者,你就应该始终以 PreparedStatement 代替 Statement.也就是说,在任何时候都不要使用 Statement。

优点:

  1. 由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率
  2. 防止SQL注入问题
创建

​ 创建:连接.prepareStatement(sql)

执行

​ 存在**?** ,先填充参数再执行

​ ddl -->execute()

​ dml -->executeUpdate()

​ select -->executeQuery()

特点

​ 处理 不变的静态的 sql 语句 |可变的 sql 语句 带 ? 的 sql

​ 优点:性能高,方便编写sql 不存在sql注入 安全

​ 缺点:不能直接打印sql语句 不方便处理错误

分析

执行完SQL 语句后可能成功也可能失败,如果成功,有数据则我们很大一部分情况是需要获取查询的结果。数据就是一切

​ ddl:没有异常就是成功

​ dml: 结果>0就是成功

​ select:分析结果集

对于 select 的结果集进行分析,类似于迭代器, 先判断(移动)再获取

​ next()

​ getXxx(索引|列名|别名)

释放资源

完SQL 语句后可能成功也可能失败,如果成功,有数据则我们很大一部分情况是需要获取查询的结果。数据就是一切

​ ddl:没有异常就是成功

​ dml: 结果>0就是成功

​ select:分析结果集

对于 select 的结果集进行分析,类似于迭代器, 先判断(移动)再获取

​ next()

​ getXxx(索引|列名|别名)

释放资源

释放资源的原则是 先打开的后关闭, 则我们的顺序一般为: 结果集->处理块->连接

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值