JDBC快速入门操作

一、jdbc简介

 JDBC是java用于连接数据库的api,数据库软件有多种,像MySQL,SQLsever,Oracle等数据库,这些数据库都是由不同的团队开发的,所以相同的功能的api的名字不同,当一个后端工程需要切换一个数据库软件时,就需要改写后端的大量跟数据库相关的代码,非常麻烦,所以Java自己提供了一套JDBC来兼容所有的数据库操作,各个厂商也根据Java的JDBC的api提供了自家数据库的驱动包,这样就是的JDBC编写时,只需要下载对应数据库的驱动包,就能使用同一套api操作不同的数据软件。

二、引入数据库驱动包

有两种办法

  1. 直接下载
    • 在Maven仓库搜索Mysql
      在这里插入图片描述
    • 选择和数据库版本匹配的数据库驱动包
      在这里插入图片描述
    • 点击jar直接下载好驱动包
      在这里插入图片描述
    • 下载好之后在jdbc项目下面新建一个lib目录,将下载好的驱动包移动到目录下
      在这里插入图片描述
  2. 创建maven项目引入依赖(和之前的Maven项目引入依赖步骤一样创建maven项目引入依赖)

三、基本api介绍

  1. DataSourse接口
     这是一个描述一个数据库的接口,这个接口是java自带的,它实例化需要数据库驱动包提供的实现了这个接口的DataSource类,本文使用的MySQL驱动包,所以对应的类名叫做MySQLDataSource。
    在这里插入图片描述
     创建好这个DataSource之后要让这个DataSource和想要操作的数据库关联起来,所以给它赋值这个数据库的对应信息。这些信息就包括,数据库用户名(user),数据库密码(password),数据库的位置信息(url)。
    在这里插入图片描述
    用户名只要不去改,自动就是数据库生成的root,password就是每次运行数据库需要输入的密码,这两个是登录数据库的钥匙,url则描述了数据库到底是在网络上的那个位置。这个url和http中的url的结构是一样的。
    jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false
    
    1. jdbc:mysql
      jdbc的版本,此时jdbc使用的是mysql驱动版。
    2. 127.0.0.1:3306
      因为是操作的本机的数据库,所以此时的ip地址是127.0.0.1,冒号后面的端口号是3306,MySQL数据库默认使用的就是3306端口。
    3. /jdbc
      数据库路径,选中的jdbc这个数据库,这个库要首先自己创建好。
      在这里插入图片描述
      4.?后面的就是一些配置信息
      characterEncoding=utf8表示字符集使用utf8字符集
      useSSL=false表示不使用加密传输
      两者之间用&隔开。
  2. Connection类
    Connection是连接类,它抽象出了连接池中的连接,在实例化了DataSource,明确了目标数据库的各种信息之后,jdbc就会创建连接池,连接池会进行多个连接,当需要使用连接时,就用getConnection方法取出一个连接。然后就可以使用取出的连接进行消息的传递了。
    在这里插入图片描述
  3. Statement接口
     Statement是用来处理sql语句的类,主要使用两个它的子类,PreparedStatement和Statement。
     其中PreparedStatement会对sql语句进行预处理,statement不会。
    因为sql语句是字符串,距离真正数据库能执行的命令还需要被解析,而服务器需要接收四面八方传来的sql语句,所以一般客户端在发送sql语句时,要先对sql语句进行解析,将解析后的命令发送给服务器,从而减轻服务器的负担。所以一般Statement不建议使用
    在这里插入图片描述
    实例化PreparedStatement时需要传入String类型的sql语句。
  4. executeUpdate和executeQuery方法
     executeUpdate是提交sql语句到服务器,并且返回一个int类型的数表示sql语句影响了几行。(适合delete,create,insert等)
     executeQuery是提交sql语句到服务器,并获取到服务器返回的结果,用resultSet类来接收。(适合select)
    在这里插入图片描述
  5. 参数化的sql语句
    可以用?来代替sql语句中的参数。
    在这里插入图片描述
    通过下标来选中第几个?(下标是从1开始的),并且用方法名setInt,setString来表示插入的参数的类型。
    构造好之后就可以用executeQuery或者executeUpdate来提交代码。
    可以多次设置不同的值,来实现不同的提交语句
  6. 资源回收(close)
    connection,statement,Resultset都需要在不使用之后对其进行关闭,如果一个connection要多次发送不同sql语句,就要产生多个statement,每个statement都会占用一定资源,需要显示的关闭。
    关闭的顺序和创建的顺序相反,ResultSet,Statement,Connection。
    有些情况下,直接关闭connection也可以自动的关闭和connection关联的ResultSet,Statement,但是这取决于对应的数据库驱动器,所以一般情况下,还是正确的关闭顺序,依次关闭比较好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/63532.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dubbo简介

1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只…

ArcGIS Pro技术应用(暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合)

GIS是利用电子计算机及其外部设备,采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲,它是在一定的地域内,将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来,达到对地理和属性信息的综合管理。GIS的…

Mac M1 安装Oracle Java 与 IEDA

文章目录 1 官网下载2 安装IDEA参考 1 官网下载 https://www.oracle.com/ 使用finder中的拖拽进行安装即可 2 安装IDEA https://www.jetbrains.com/zh-cn/idea/download/?sectionmac 同样的,下载完后拖拽安装即可 参考 Mac M1 安装Java 开发环境 https://blog.…

Lorenz系统最大lyapunov exponent的求解

首先看下Lorenz混沌系统: 赋予初始值,例如: 当然,初始值可以根据需要设定。 看下他的吸引子,很美: 看下他的分叉图:

动手学DL——MLP多层感知机【深度学习】【PyTorch】

文章目录 4、多层感知机( MLP)4.1、多层感知机4.1.1、隐层4.1.2、激活函数 σ 4.2、从零实现多层感知机4.3、简单实现多层感知机4.4、模型选择、欠拟合、过拟合4.5、权重衰退4.6、丢失法|暂退法(Dropout)4.6.1、dropout 函数实现4…

golang学习随记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 go学习快捷键及快速生成代码片段go基础循环流程控制关键字切片,拷贝函数闭包 defer语句格式化输出go语言随机数rand.seed() 包管理并发编程goroutinecha…

实践分享:小程序事件系统设计

微信小程序官方文档中解释说:事件是用于子组件向父组件传递数据,可以传递任意数据。 小程序开发中的事件是指视图层到逻辑层的通讯方式,主要是可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件&#…

Linux:Shell编程之正则表达式

目录 绪论 1、正则表达式 1.1 通配符 1.2 正则表达式分类 1.3 基本正则 1.4 正则表达式中表示次数的表达式 1.5 位置锚定 1.5.1 词首锚定和词尾锚定 1.6 分组() 1.7 逻辑或 1.8 扩展正则 绪论 正则表达式:有一类特殊字符以及文本…

淘宝商品详情接口(商品列表,APP详情接口)返回示例说明,PC端和APP端

淘宝商品详情包括以下信息: 1. 商品标题:商品的名称或标题,用于描述商品的特点和功能。 2. 商品价格:商品的销售价格,包括原价和促销价等。 3. 商品图片:展示商品的照片或图像,以便顾客可以更…

项目实战 — 消息队列(5){统一硬盘操作}

前面已经使用数据库管理了交换机、绑定、队列,然后又使用了数据文件管理了消息。 那么,这里就创建一个类,讲之前的两个部分整合起来,对上层提供统一的一套接口,表示硬盘上存储的所有的类的信息。 /* * 用这个类来管理…

C#随机法 双峰函数 求极值 避免落入局部最优解

避免落入局部最优解,只要让步长够长即可。 x1 resultX1 random1.NextDouble()*100; 如果后面不乘以100,则很大概率落入负数的最大值 Random random1 new Random(DateTime.Now.Millisecond);double x1 0, resultX10,max-999999,maxTemp0;for (int i …

Arcgis中直接通过sde更新sqlserver空间数据库失败

问题 背景 不知道有没有人经历过这样一个情况,我们直接在Arcgis中通过sde更新serserver数据库会失败,就是虽然在sde更新sqlserver数据库,但是在Navicat中通过sql语句来查询,发现数据并没有更新,如:上图中,更新数据库后,第一张图是sde打开的sqlserver数据库,它的数据库…