MySQL数据库|JDBC
是占位符用户名密码定义要执行的SQL接受用户输入当类加载到JVM的时候,执行数据源的初始化接受用户参数。
什么是JDBC
JDBC(Java Data Base Connectivity, Java数据库连接)是Java程序和数据库之间的桥梁,包含 了一套Java定义的用于执行SQL语句的接口,使开发者能够编写数据库的程序
接口是一套规则,接口中定义一系统方法,这些方法由具体的实现类去完成实现
JDBC工作原理
JDBC工作原理简洁地概括为:
1.确定数据库服务器的地址,端口号 (数据源)
2.建立连接,用户名,密码 ,不同数据库以哪种协议建立连接 (数据库连接)
3.发送要执行的SQL,以什么样的形式发送,这里主要考虑编码的格式协议 (执行对象)
这里的协议是指事先商量好的规则
4.接受返回结果,包括结果集,受影响的行数,以哪种协议解析结果 (结果集)

5.关闭连接 (释放资源,关闭连接)
JDBC的补充
JDBC是JAVA平台提供的接口,具体实现是由数据库厂商去完成的
使用JAVA数据库,必须处理不同数据库对数据的编码集
这些对于数据的具体的操作由数据库厂商来实现,不要让JAVA程序员再去处理数据之间的差异

使用JDBC
JDBC使用过程可以概括为:加载数据库厂商的驱动包、建立连接、创建Statement、执行SQL、 处理结果释放资源和关闭连接。
创建Maven工程并配置国内镜像
MAVEN内似于应用商店,在maven维护了所有的JAVA工程需要用到的依赖

默认仓库是国外的,需要通过镜像修改为阿里云的
创建MAVEN工程


获取MySQL驱动包

修改pom.xml文件

如果说这里出现了8.0.33也就刚才在POM.XML中添加的依赖,就说明已经添加成功
而前面的阿里云是加速这里maven的下载
JDBC使用过程可以概括为
加载数据库厂商的驱动包
![]()
通过数据库厂商的提供的驱动来操作数据库
驱动管理类DriverManager
使用 DriverManager 的静态方法获取数据库连接
建立数据库连接
![]()
加载数据库厂商提供的驱动
![]()
通过完全限定名加载到指定的类到JVM
JDBC URL

url指定了数据库的地址,是一个固定写法

获取数据库连接


创建Statement
![]()
用来执行SQL的对象
执行SQL
定义SQL并且执行SQL语句

接受用户的输入


执行SQL,获取查询结果
![]()
结果集

对结果集进行遍历,获取数据,如果有下一条记录,返回true,没有则返回false

依次释放资源和关闭连接。
按照倒序依次捕获异常

结果输出

DataSource连接池技术
之前的DriverManager.getConnection每次获取的是一个物理连接
通过数据源的方法,在实际开发中经常用到
通过此法,一个链接可以执行很多SQL,直到关闭数据源
通过一个连接池去管理很多链接,当需要SQL执行的时候,从连接池里拿一个空间连接出来,用完后返回给连接池
定义MySQL数据源对象
![]()
设置数据库连接串

?是占位符
用户名
![]()
密码
![]()
定义JDBC的数据源对象
![]()
定义连接对象
![]()
定义预处理SQL执行对象
![]()
定义结果对象
![]()
1.通过数据源获取数据库连接
![]()
2.获取预处理的SQL执行对象
定义要执行的SQL

接受用户输入

3.用真实值替换占位符
![]()
编号从1开始,有多少个参数就设置多少个值
4.执行SQL,获取结果集
![]()
5.遍历结果集
![]()
获取学生Id

依次释放资源,关闭连接

通过以上两个例子,我们不难发现部分操作是重复的,那我们可以将其写成一个类
DButil
数据源定义与准备操作

当类加载到JVM的时候,执行数据源的初始化

获取数据库连接

释放资源,关闭连接

通过以上操作我们就创建了一个DBUtil的类,可以简化DataSource的数据初始化和关闭操作
,对于插入操作也同样可以定义类的方法来简化操作
Insert
在使用DBUtil的操作上进行插入操作
获取数据库连接
![]()
定义SQL
![]()
定义SQL的预处理对象
![]()
接受用户参数

用真实数据填充占位符

执行SQL获取结果
![]()
判断结果

释放资源,关闭连接

插入操作需不需要定义结果集对象?
不用,因为insert返回的是受影响的行数
在使用idea时发现可以通过对象来调用静态方法

不想出现这种情况可以使用private

更多推荐
所有评论(0)