Java的JDBC编程

news2025/7/17 0:37:47

1. 数据库编程的必备条件

  • 编程语言,如Java,C、C++、Python等
  • 数据库,如Oracle,MySQL,SQL Server等
  • 数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。同样的,要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。

2. Java的数据库编程:JDBC

JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是 Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java 开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。

3. JDBC工作原理

JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问API的一种高级抽象,它主要包含一些通用的接口类。 

  JDBC优势:

  • Java语言访问数据库操作完全面向抽象接口编程
  • 开发数据库应用不用限定在特定数据库厂商的API
  • 程序的可移植性大大增强

MySQL的API就是为了让我们实现客户端的。

        Oracle,SQLServer,SQLite等数据库,由不同公司维护,所以API也不同,学习成本很高,这时,java中的JDBC就是把这些API统一成一套标准,已经成为java标准库的一部分,由于java影响力很大,各个数据厂商都推出了适应JDBC的“驱动包”。

此时,只要掌握了JDBC这套API,无论操作那个数据库,操作的代码就基本相同了。

总结:JDBC屏蔽了不同数据库原生API之间的差异,使用同一套API接口来规范所有数据库的操作。

4. JDBC使用

 4.1 安装对应数据库的驱动包

Maven 存储库:搜索/浏览/探索 (mvnrepository.com)

 ​​​​​​​

 

 下载好后出现下面的压缩包

.jar是一个java格式的压缩包,类似于.zar .rar一样

 

 .jar中有很多的.class文件,是.java编译生成的二进制字节码文件,通过压缩以.jar的方式发出去

(1)在项目中创建文件夹lib,并将依赖包mysql-connector-java-5.1.47.jar复制到lib中。

(2)配置该jar 包到本项目的依赖中:

 

 (3)编写数据库代码

 JDBC里的很多API都是interface,是由具体的数据库驱动包来提供对应的实现类(定义的时候选择向上转型)MysqlDataSource()就是驱动包里提供的具体的类(使用的时候使用向下转型)

 向下转型是为了避免MysqlDataSource这个名字扩散到代码的其他地方(高内聚),未来要是更换数据库,只需要改这一行代码即可

 Url:唯一资源地址符,描述了互联网上的唯一的一个资源的位置(俗称:网址)

"jdbc:mysql://127.0.0.1:3306/java106?characterEncoding=utf8&useSSL=false"

上面的数据源的创建操作只是描述了服务器在哪,并没有真正进行访问,下面的“连接操作”才是真正的开始通过网络进行通信 。

 不同数据库对于数据源的描述是存在差异的,有的数据库是通过用户名密码来认证的,有的不是(比如:SQLite)

 Connection是网络通信中的核心概念,叫做”连接(connection)“,不叫“链接(Link)”

connection会有受查异常,必须显式处理,try throws

 PreparedStatement背后做了很多事,比如对SQL语句进行一些预处理(对语法进行解析)

以前通过cmd输入的sql都是直接交给服务器处理的,服务器负担会加重,PreparedStatement的作用就是减轻服务器的压力。

 

 

 

 但是String sql = "insert into student values(1,'张三')";这样写死的数据不是动态的

解决方法1:通过控制台,来输入用户的信息

 解决方法2:使用PreparedStatement来通过占位符替换的方法实现(先替换,再执行)

 修改删除和插入操作差不多,只需要改变下面双引号里的sql语句。

 主要是查找操作多了一个步骤,遍历结果集,使用while语句

 

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

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

相关文章

Telnet SMTP协议关于“535 Error: authentication failed“解决思路

计算机网络中应用层的SMTP(Simple Mail Transfer Protocol)协议可用来发送邮件,在Telnet使用SMTP登陆账号密码时出现“535 Error: authentication failed”问题。现记录解决步骤。 1. 确认在邮箱中已开启SMTP服务。 2. 按照扫码流程,获得授权密码&…

第六章第二节:图的遍历(广度优先遍历和深度优先遍历)和应用(最小生成树、最短路径、有向无环图的描述表达式、拓扑排序、关键路径)

文章目录1. 图的遍历1.1 广度优先搜索(BFS)1.1.1 遍历序列的可变性1.1.2 复杂度的分析1.1.3 广度优先生成树1..1.4 广度优先生成森林1.2 深度优先搜索(DFS)1.2.1 树的深度优先遍历1.2.2 图的深度优先遍历1.2.2 复杂度的分析1.2.4 …

Servlet | 域对象、request对象其它常用的方法

目录 一:域对象 1、应用域对象 2、请求域对象 二:request对象其它常用的方法 一:域对象 1、应用域对象 (1)应用域对象是什么? ServletContext (Servlet上下文对象。) 什么情况…

NCV7705DQAR2G 汽车电机驱动器(NCV7705DQR2G)引脚配置

型号:NCV7705DQAR2G NCV7705DQR2G 封装:36-BFSOP 类型:电机驱动器,控制器 NCV7705/NCV7705(A)是一款功能强大的汽车车身控制系统驱动IC。该集成电路设计用于控制车辆前门的多个负载。单片集成电路可以控制镜面定位、加热、折叠等…

JS测试出最小支持字体,以及修复PDFJS的文本错误偏移

PDFJS的文本层有时会有一个错误的整体偏移,导致文本处于错误位置,导致用户选择错误的文本。 为什么会这样呢?其一,如果浏览器的文本缩放不是100%,而PDFJS没有检测这一点,导致文本排布发生偏移。安卓可以通…

[附源码]java毕业设计人口老龄化社区服务与管理平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

一个Adapter+recycleview实现多种布局,区分布局中

文章目录🍓🍓简述🍓🍓效果图🍓🍓代码🥭🥭AllAdapter.java🥭🥭 FuritAdapter3.java🥭🥭MainActivity.java(主函数)🥭&#…

适合中小企业的CRM客户关系管理系统?

1、CRM如果体量30人及下列 这类民营企业的特征是没营业网点,分散办公设备,一职多能,没他们的IT控制技术职责部门。通常老板重大决策,子公司全体相关人员采用。 主要就采用目地是管理组织工作顾客档案,历史记录顾客数…

力扣138 - 复制带随机指针的链表【复杂链表的终极试炼】

想指☞哪就指哪儿~一、题目描述二、思路分析与罗列思路一:通过原链表的【random】去找控制拷贝链表的【random】思路二:直接链接到原链表处做相邻结点的【random】修改Step1:把复制的结点插入到原结点后Step2:设置拷贝结点的rando…

计算机毕业设计ssm+vue+elementUI基于html的戒烟网站

项目介绍 大量研究证据表明,戒烟可降低或消除吸烟导致的健康危害。任何人在任何年龄戒烟均可获益,且戒烟越早、持续时间越长,健康获益就越大。随着时代发展人们对健康也越来越重视,更多的人参与到了戒烟的行列中来,本…

React环境搭建

目录 1.React环境搭建 2.React项目结构 3.React优点和缺点 1.声明式设计 2.高效-React通过对DOM的模拟(创建虚拟DOM),最大限度地减少DOM操作(底层是Diff算法) 3.单向响应的数据流 4.组件化开发-复用和便于维护 5.缺点:React本身能做的事并不多&am…

手机实时预览vscode写的html页面

一、vscode安装Live Server插件 扩展(CtrlShiftX)搜索Live Server进行安装 二、设置电脑IP (1)winR 打开终端输入:ipconfig (2)找到SDN 服务器 (3)设置IPv4窗口 高级…

为什么WinXP SP2有时候会忘记CD自动播放的设置?

实际上,它并没有忘记,它只是想和你再次确认一下。 这是 Windows XP2 负责开发 CD 自动播放组件的工程师和我说的。 在 Windows XP 中,处理 CD 自动播放时会有两个问题。 第一,当你安装了一个新的可以处理 CD 自动播放的应用程序…

分库分表利器——shardingJdbc

一、分库分表方式 1.1 垂直切分 1.1.1 垂直分表(拆分字段——但每张表的数据量是不变的) 把一张表的一部分字段存在一张新表里面,将另一部分字段存在另一张新表中 1.1.2 垂直分库(专库专表) 把单一数据库按照业务…

一篇文章带你学完mysql的DQL查询操作

目录 DQL简介 具体操作 数据准备 简单查询 运算符 条件查询 排序查询 聚合查询 null值的处理 分组查询 分页查询 insert into select语句 总结 DQL简介 概念:DQL(data query language)数据查询语言 select操作 排序规则&…

关于Excel自动换行,不会在西文单词中间换行的问题

工作上遇到了一个Excel中换行的问题,就是使用了Excel的默认自动换行后,如果一个单词很长,那么一般情况下是不会在单词中间换行的。在网上查了些资料,最终找到了一个不算太完美的方法。 结果 就是使用vba修改单元格里面的内容&am…

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.11 SpringBoot 整合 MongoDB

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.11 SpringBoot 整合 MongoDB4.11.1 SpringBoot 整…

Redis 到底是单线程还是多线程呢?

前言 Redis是高性能分布式缓存常用中间件,我们经常说Redis是单线程的, 也有人说Redis在6.0版本采用了多线程,那么Redis到底是采用单线程呢?还是多线程? 通常说 Redis 是单线程,其实主要是指 Redis 对外提供…

CNCF基金会成员的分类

CNCF简介 2015年,谷歌与Linux基金会及众多行业合作伙伴一起建立了一个云原生计算基金会(CNCF,Cloud Native Computing Foundation)。CNCF旨在创建并推动一个新的计算范式,这个范式的目的是增强现代分布式系统&#xf…

dataset.py篇

dataset.py 目录: 前言观察数据书写代码函数解释 前言 在步骤中需要写自己的dataset类,并将label和image一一对应后返回。 观察数据 在书写dataset前最重要的就是要观察数据集,对数据集进行分析,比如了解图片大小&#xff0c…