目录

JDBC 初认识、速了解

目录

[一. JDBC的简介](#一. JDBC的简介)

[1. 数据的持久化](#1. 数据的持久化)

[2. 什么是JDBC](#2. 什么是JDBC)

[二. JDBC中常用的类和接口](#二. JDBC中常用的类和接口)

[1. Driver 接口](#1. Driver 接口)

[2. DriverManager 类](#2. DriverManager 类)

[3. Connection 接口](#3. Connection 接口)

[4. Statement 接口](#4. Statement 接口)

[5. PreparedStatement接口](#5. PreparedStatement接口)

[6. ResultSet 接口](#6. ResultSet 接口)

[三. 总结](#三. 总结)


前言

从现在开始就来讲解JDBC的相关知识了

本文的目的是来大体的了解JDBC以及会用到的类和方法

旨在让读者更好的了解JDBC

个人主页:艺杯羹

一. JDBC的简介

1. 数据的持久化

先讲一个概念,数据的持久化(persistence)

简单来说就是将内存中的数据保存到可永久保存的设备中,例如磁盘

主要应用在将内存中的数据存储在关系型数据库中,也可以存储在磁盘文件、XML数据文件中

关系图如下:

2. 什么是JDBC

JDBC

  1. JDBC(Java DataBase Connectivity)java 数据库连接
  2. 是 JavaEE 平台下的技术规范
  3. 定义了在 Java 语言中连接数据库,执行 SQL 语句的标准 API
  4. 可以为多种关系数据库提供统一访问

数据库驱动程序

  1. 数据库驱动就是直接操作数据库的一个程序
  2. 不同数据库产品的数据库驱动名字有差异
  3. 在程序中需要依赖数据库驱动来完成对数据库的操作

Java中访问数据库技术

  1. 基于JDBC标准访问数据库
  2. 使用第三方ORM 框架,如Hibernate, Mybatis 等访问数据库

当有了JDBC那么java程序就可以通过JDBC,操作各种数据库(MySQL,Oracle,SQLserver等)

二. JDBC中常用的类和接口

先介绍JDBC常用的类和接口,从大体上了解一下

1. Driver 接口

英文意思
driver:驱动程序

从意思就可以看出,这个接口是关于数据库驱动的

Driver 接口的作用是来定义数据库驱动对象 应该具备的一些能力

比如与数据库建立连接的方法的定义,该接口是提供给数据库厂商使用的

所有支持 java 语言连接的数据库都实现了该接口,实现该接口的类我们称之为数据库驱动类

2. DriverManager 类

英文意思

Manager:管理

从意思可以看出,这个是关于数据库驱动管理的接口

DriverManager是驱动程序管理器,是负责管理数据库驱动程序的

驱动注册以后,会保存在DriverManager中的已注册列表中

DriverManager 通过实例化的数据库驱动对象,能够建立应用程序与数据库之间建立连接。并返回 Connection 接口类型的数据库连接对象。

  • getConnection(String jdbcUrl, String user, String password)
    该方法通过访问数据库的 url、用户名以及密码,返回对应的数据库的 Connection 对象
  • JDBC URL
    与数据库连接时,用来连接到指定数据库标识符
    在 URL 中包括了该数据库的类型、 地址、端口、库名称等信息
    注意:不同品牌数据库的连接 URL 不同

先了解一下这个URL的写法,之后会详细讲解的

java 复制代码
Connection conn = 
DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");

3. Connection 接口

英文意思

connection:连接

从意思可以看出,这个是连接数据库的接口

Connection 是数据库的连接(会话)对象

对数据库的一切操作都是在这个连接基础之上进行的,我们可以通过该对象执行 sql 语句并返回结果

常用方法

  • createStatement()
    创建向数据库发送 sql 语句的 Statement 接口类型的对象**。**
  • preparedStatement(sql)
    创建向数据库发送预编译 sql 的PrepareSatement 接口类型的对象。
  • setAutoCommit(boolean autoCommit)
    设置事务是否自动提交
  • commit()
    在链接上提交事务
  • rollback()
    在此链接上回滚事务(回滚就是撤销)

4. Statement 接口

一句话:用于执行SQL语句

用于执行静态 SQL 语句并返回它所生成结果的对象。 由 createStatement 创建,用于发送简单的 SQL 语句( 不支持动态绑定**)**。字符串里要保存好

常用方法

  • execute( String sql )
    有结果集返回true 没有返回false
    执行参数中的 SQL,返回是否有结果集
  • executeQuery( String sql )
    运行 select 语句,返回 ResultSet 结果集
  • executeUpdate(String sql)
    运行 insert/update/delete(DML操作) 操作,返回更新的行数
  • addBatch(String sql)
    把多条 sql 语句放到一个批处理中
    批量添加
  • executeBatch()
    向数据库发送一批 sql 语句执行

5. PreparedStatement接口

一句话:用来执行SQL语句,和Statement接口类似,但是这个接口能够避免很多问题,所以后期基本上都是用的这个接口

继承自 Statement 接口 。PreparedStatement 对象比 Statement 对象的效率更高,由于实现了动态的参数绑定,所以可以防止 SQL 注入(支持动态),所以我们一般都使PreparedStatement

对Statement接口做了一个扩展

常用方法

  • addBatch()
    把当前 sql 语句加入到一个批处理中
  • execute()
    执行当前 SQL,返回个 boolean 值
  • executeUpdate()
    运行 insert/update/delete 操作,返回更新的行数。
  • executeQuery()
    执行当前的查询,返回一个结果集对象
  • setDate(int parameterIndex, Date x)
    向当前SQL语句中的指定位置绑定一个java.sql.Date值
  • setDouble(int parameterIndex, double x)
    向当前 SQL 语句中的指定位置绑定一个 double值
  • setFloat(int parameterIndex, float x)
    向当前 SQL 语句中的指定位置绑定一个 float 值
  • setInt(int parameterIndex, int x)
    向当前 SQL 语句中的指定位置绑定一个 int 值
  • setString(int parameterIndex, String x)
    向当前 SQL 语句中的指定位置绑定一个 String 值

6. ResultSet 接口

ResultSet 用来暂时存放数据库查询操作获得结果集。

注意:这个是表的指针,不是整个结果集的表

常用方法

  • getString(int index) 和 getString(String columnName)
    获得在数据库里是 varchar、char 等类型的数据对象。
  • getFloat(int index)和 getFloat(String columnName)
    获得在数据库里是 Float 类型的数据对象。
  • getDate(int index) 和 getDate(String columnName)
    获得在数据库里是 Date 类型的数据。
  • getBoolean(int index) 和 getBoolean(String columnName)
    获得在数据库里是 Boolean 类型的数据。
  • getObject(int index) 和 getObject(String columnName)
    获取在数据库里任意类型的数据。

三. 总结

这就是JDBC的初认识以及之后会用到的相关的类和方法,希望能够帮助到你😊

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
User_芊芊君子37 分钟前
【金仓数据库征文】金仓数据库KingbaseES:千行百业国产化征程中的璀璨之星
数据库·数据库平替用金仓·金仓数据库2025征文
Mr Aokey40 分钟前
手写Java线程池与定时器:彻底掌握多线程任务调度
java·开发语言
User_芊芊君子2 小时前
【金仓数据库征文】金仓数据库KingbaseES:在技术与人文交织中开拓信创未来
数据库·数据库平替用金仓·金仓数据库2025征文
傻啦嘿哟3 小时前
Python正则表达式:用“模式密码“解锁复杂字符串
linux·数据库·mysql
西瓜本瓜@4 小时前
在Android中如何使用Protobuf上传协议
android·java·开发语言·git·学习·android-studio
言之。4 小时前
别学了,打会王者吧
java·python·mysql·容器·spark·php·html5
机智的人猿泰山4 小时前
java kafka
java·开发语言·kafka
辰哥单片机设计5 小时前
JW01三合一传感器详解(STM32)
数据库·mongodb
小刘同学++5 小时前
Qt使用 SQLite 数据库的基本方法
数据库·qt·sqlite
Algorithm15765 小时前
谈谈接口和抽象类有什么区别?
java·开发语言