【MySQL】JDBC编程重点知识汇总

news2024/11/18 13:51:48

文章目录

    • 1. JDBC (API):
    • 2. JDBC代码编写:
      • 2.1 创建数据源对象:
      • 2.2 建立连接:
      • 2.3 构造SQL语句:
      • 2.4 执行SQL:
      • 2.5 释放资源:

1. JDBC (API):

  1. 前面学过很多的SQL, 实际开发中大多数的SQL都不是手敲的, 都是通过程序来执行的.

  2. 各种的数据库都会提供API方便编程语言来控制; API (Application Programming Interface 应用程序编程接口, 提供了一组类/方法, 让程序猿直接调用)

  3. 不同种类的数据库, 提供的API不一样. 为了降低程序猿的学习成本, Java就提供了一组统一风格的数据库操作API然后让这些数据库厂商适配Java的API. 因此程序猿只需要掌握一套Java的API (JDBC)就能操作各种数据库了.

  4. 在这里插入图片描述

  5. 既然需要有驱动包进行接口之间的转换, 因此就需要先把驱动包给下载下来, 并且导入到项目中.

  6. 如何下载驱动包? 在中央仓库中搜索MySQL, 第一个结果 mysql-connector-java就是需要找的驱动包.这个驱动包的版本需要和MySQL服务器的大版本对得上

  7. 下载的驱动包文件是 .jar后缀的文件, 称为jar包. jar包本质上是一个压缩文件.里面很多 .class文件(.java编译生成的二进制文件). jar包其实是一个java程序发布的一种常见手段, 一个程序里的 .class文件可能很多, 因此打包成一个压缩包就方便了很多.

  8. 环境: JDBC在使用的时候, 需要下载并导入对应数据库的驱动包. 把下载的 jar包 导入到项目中使用: 在这里插入图片描述

2. JDBC代码编写:

2.1 创建数据源对象:

  1. DataSource是个接口, 这里使用多态是降低耦合的方式.

  2. 数据源对象就描述了要访问的数据库是啥, 在哪.在这里插入图片描述

  3. 每个数据库都会提供对应的类来实现DataSource接口, DataSource是服务于各种数据库的, MysqlDataSource只是服务于MySQL.

  4. 在这里插入图片描述

  5. DataSource内置连接池, 连接复用, 从而提高效率.(资源准备好之后, 随时用, 随时拿)

2.2 建立连接:

  1. 访问数据之前要先和数据库服务器建立连接, 先建立连接再进行后续的操作.在这里插入图片描述

  2. 使用Connection表示连接, 应该使用JDBC里面的Connection, 而不是MySQL驱动包里面的Connection.

  3. MySQL的客户端和服务器在一个主机上, 是通过环回IP来连接的, 这个和连不连外面的网络没有关系.

2.3 构造SQL语句:

  1. 先通过字符串描述出要执行的SQL是啥, 然后再构造成PreparedStatement对象.在这里插入图片描述

  2. SQL语句发送给数据库, 数据库就得对这个SQL进行解析操作, 这个解析的过程, 其实是比较消耗时间的消耗资源的. 同时数据库也要处理很多客户端的请求, 所有的解析工作都让由服务器来完成, 这就让本来就不富裕的系统资源, 雪上加霜了.

  3. 为了解决上述的问题, 就需要使用PreparedStatement, 把一部分的解析工作交给客户端来完成, 客户端解析完成之后, 把结果发送给数据库, 数据库从而节省了资源的开销, 提高了处理的效率.

  4. 推荐的操作
    :在这里插入图片描述


在这里插入图片描述

上述的代码是通过字符串拼接的方式, 可以让用户输入数据进行插入, 虽然问题解决了, 但是不太好!

1.代码非常乱

2.不安全, 容易引发SQL注入漏洞

2.4 执行SQL:

  1. 执行代码这里修改和查询调用的方法是不同的.

  2. 在这里插入图片描述

  3. 在这里插入图片描述

  4. 在这里插入图片描述

2.5 释放资源:

  1. 释放的顺序要和申请的顺序正好相反, 先创建的后释放, 后创建的先释放.在这里插入图片描述

  2. 常说的资源, 一般指的是一些硬件资源(CPU/内存/硬盘/网卡带宽).这里释放的是内存资源.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaEE】网络初识

初识网络协议 OSI七层和TCP/IP五层(四层) 应用层 应用程序 代码实现 传输层 端到端传输 (如玩家对玩家) 操作系统内核实现 网络层 点到点传输 操作系统内核实现 数据链路层 相邻节点之间的传输 (如集散点…

ChatGPT能接入微信了

前两天还看到不少人讨论,要是ChatGPT接入微信是啥感觉? 这不,想你所想,项目已经来了~ 来看效果,ChatGPT就出现在普通的微信对话框里,有问必答: 甚至还能拉入群聊,大家共用&#xf…

Adobe Premiere Pro 2020 系统兼容性报告:不支持的视频驱动程序

Adobe Premiere Pro 2020 系统兼容性报告:不支持的视频驱动程序 1. 问题 打开Adobe Premiere Pro 2020,看见系统兼容性报告:不支持的视频驱动程序。如下图: 点击修复,进入安装 Intel 图形驱动程序教程页面&#xff0…

DQL查询数据

文章目录DQL指定查询字段where条件子句联表查询分页和排序子查询DQL (Data Query Language:数据查询语言) 所有的查询操作都要用到它 select简单的查询,复杂的查询都要用到它数据库最核心的语言,最重要的语言使用频率…

python写个网页,使用flask显示时间登陆注册

用python写个网页。显示当前时间 可以使用 Python 的 datetime 模块来获取当前时间,然后使用 Python 的 Flask 框架来创建网页。 首先,需要安装 Flask: pip install flask 然后,可以使用以下代码创建一个 Flask 应用程序&#…

【Numpy基础知识】字节交换

字节交换 来源:Numpy官网:https://numpy.org/doc/stable/user/basics.html 文章目录字节交换导包【1】字节排序和ndarrays 简介【2】更改字节顺序导包 import numpy as np【1】字节排序和ndarrays 简介 ndarray 是一个对象,它为内存中的数据…

2023年,我的儿子刚从美国名校毕业,就失业了...

前不久,朋友圈里一篇名为《2023年,我的儿子刚从美国名校毕业,就失业了…》的文章火爆全网。 故事里的男孩出生于一个中产阶级家庭,从每年12万的幼儿园开始一路接受了优质教育,最终不负众望从美国前50名校的商学院毕业…

Ubuntu20.04LTS环境docker+cephadm方式部署Ceph 17.2.5

Ubuntu20.04LTS环境dockercephadm方式部署Ceph 17.2.51. 前言2. 环境准备2.1. 主机信息2.2. NTP时间同步2.3. 关闭 iptable 和 firewalld2.4. 关闭 SElinux2.5. 生成SSH证书,并分发到其他节点2.6. 依赖安装3. 安装部署Ceph17.2.53.1. 安装cephadm,拉取ce…

玩转ast- 手写babel插件篇

AST抽象语法树是什么?抽象语法树(Abstract Syntax Tree,AST)是源代码语法结构的一种抽象表示它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构每个包含type属性的数据结构,都…

基于Amlogic T972:结合DTS、驱动、Datasheet,解析Pinctrl子系统、GPIO脚的复用方法

文章目录前言一、概念1.1 Pinctrl devices1.2 Pinctrl client devices二、例(1)GPIOZ_9/10 复用为 i2c2_z2.1 Pin controller devices2.1.1 设备树配置: dts2.1.2 源码:驱动配置2.1.3 Datasheet2.2 Pinctrl client devices2.2.1 设备树配置&a…

华为云桌面,开启云上高效办公之旅!

在传统办公模式中,企业必须自己购买服务器和数据库软件才能进行日常管理,部署繁琐,还需要日常运维。而云桌面办公系统通过将传统的计算机终端与云计算平台有机地结合起来,使企业能够轻松应对各种变化带来的威胁和压力。 其中华为云…

用户与技术双向推动,小游戏赛道迎来新一轮增长机会

2017 年 12 月 28 日,微信小游戏正式上线。“跳一跳”刷爆了微信朋友圈,随后欢乐斗地主、坦克大战、纪念碑谷、拳皇等经典游戏纷纷出现在小游戏平台上。在过去的5年间,各大平台纷纷紧跟微信的步伐,纷纷入局小游戏,当前…

回调函数的基本使用

🏖️作者:malloc不出对象 ⛺专栏:《初识C语言》 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录前言一、什么是回调函数二、为什么要…

打开新世界大门,测试人可以用Chrome插件干什么?

什么是Chrome插件 这篇文章所说的Chrome插件,也就是我们通常说的Chrome扩展 (Chrome Extension),是一个用Web技术开发、用来增强浏览器功能的软件,它其实就是一个由 HTML、CSS、JS、图片等资源组成的一个 .crx 后缀的压缩包。 让我们来看看…

Android12屏下指纹解析

版权声明:本文为梦想全栈程序猿原创文章,转载请附上原文出处链接和本声明 前言:google官方更新了Android12的指纹架构,新添加了关于屏下指纹(屏下光学跟屏下超声波)的支持, 刚好近期要研究这个,想把自己的…

移动硬盘安装ubuntu系统二——启动U盘安装

一. 简介 在之前的一篇文章中记录了使用VMware Workstation给移动硬盘中安装Ubuntu系统过程,本篇文章简单记录使用启动盘安装 Ubuntu 20.04.5系统到移动硬盘。 二. 制作Ubuntu镜像的系统启动盘 按照官网 Install Ubuntu desktop上介绍,在 Windows 上可…

【Transformer】——李宏毅机器学习笔记

Transformer 前言 transformer是一个sequence-to-sequence(seq2seq) 的 model input a sequence,output a sequence. The output length is determined by model. 例如 语音辨识: 那么为什么不能把以上三种模型结合起来,进行语音识别呢&…

代码随想录拓展day3 922. 按奇偶排序数组II;24. 两两交换链表中的节点;234.回文链表;143.重排链表

代码随想录拓展day3 922. 按奇偶排序数组II;24. 两两交换链表中的节点;234.回文链表;35.搜索插入位置 数组和链表的题目。链表的操作几天没看又忘了,果然是要及时复习加反复复习。 922. 按奇偶排序数组II 922. 按奇偶排序数组 …

【小程序】宿主环境之通信模型和运行机制

目录 宿主环境 1. 什么是宿主环境 2. 小程序的宿主环境 通行模型 1. 通信的主体 2. 小程序的通信模型 运行机制 5. 小程序启动的过程 6. 页面渲染的过程 宿主环境 1. 什么是宿主环境 宿主环境(host environment)指的是程序运行所必须的依赖环…

论文笔记Point·E: A System for Generating 3D Point Clouds from Complex Prompts

之前的文本生成3D模型的方法生成一个模型需要多块GPU跑好几个小时,该文章提出的方法生成一个3D模型只需要单GPU1-2分钟。 该文章生成的3D模型的质量并不是当下最好的,但是生成速度很快,因此在现实中很有意义。 从文本生成3D模型的过程分为三…