JDBC基本步骤

article/2025/9/21 4:11:35

JDBC编程

JDBC即java数据库互连,是java语言和数据库之间独立于数据库的连接标准API,JDBC从根本上来说是 一种规范,具体的实现需要依赖于具体数据库生产商提供jar包【驱动】,提供了统一的接口用于访问不 同的底层数据库,允许使用java语言编写不同的应用程序以访问数据库。

  • 为Java语言定义了一个SQL调用级别的统一界面
  • 为访问关系型数据库提供了一个标准的界面
  • 所谓的JDBC实际上就是一种用于执行SQL语句的API,可以采用一致的方式连接不同的额数据库系 统,从而使用标准的SQL语言来存取数据库中的数据

请添加图片描述

具体的数据库访问采用的都是c/s架构

  • 支持多种不同的数据库服务器主要的业务逻辑集中在客户端中
  • 服务器端的逻辑侧重于数据库的操作
  • 胖客户端将频繁访问远程数据库,可能会导致网络流量增大问题

JDBC的体系结构

Java应用程序可以通过Java API与数据库连接,JavaAPI中的一组用Java语言编写的类和接口位于java.sql 和javax.sql包中,实际动作则是由JDBC驱动管理器通过数据库生产厂商提供的JDBC驱动程序与数据库管 理系统进行连接
请添加图片描述

每个JDBC应用程序至少需要有一个JDBC驱动程序,JDBC驱动是Driver接口的实现类

  • Driver接口是驱动程序需要实现的接口,Driver使DriverManager和JDBC应用可以独立于具体的数据库系统
  • 在不同类型的应用中添加驱动的方式不同

请添加图片描述

  • 将驱动程序拷贝到新建的文件夹中,然后使用右键将jar包添加到构建路径中

请添加图片描述

JDBC API

  • java.sql.DriverManager负责加载、拆除驱动程序,负责获取和数据库管理系统的连接

  • java.sql.Connection实现对某个数据库系统的连接

    • 一个数据库管理系统能够提供的连接数是有限的,必须保证连接及时关闭
  • java.sql.Statement用于实现向数据库系统提交SQL语句

    java.sql.PreparedStatement用于执行预编译的SQL语句

    java.sql.CallableStatement用于提交执行存储过程

  • java.sql.ResultSet是数据库系统返回的查询结果集

JDBC基本操作步骤

  • 加载驱动程序

  • 创建数据库连接,必须保证及时关闭

  • 提交执行SQL语句

  • 接收并处理SQL的执行结果

  • 关闭释放资源

1、加载驱动

首先将驱动jar包从数据库系统官方网站上下载下来,并将驱动jar包添加到构建路径中

Class.forName(“驱动串”)。这里的驱动串就是需要加载的JDBC驱动程序的名称

早期没有很多数据库提供驱动,所以java提供了通过微软的ODBC连接数据库的方法,这个驱动已经包 含在java中,叫做jdbc-odbc桥接方式。例如访问micorosoft office中的access数据库的方法为

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

JDBC的驱动方式可以分为4种类型:JDBC-ODBC桥接方式、Native-API驱动、JDBC-Net驱动和Native- protocol驱动

//受检型异常 ClassNotFoundException
Class.forName("com.mysql.cj.jdbc.Driver");
//从反射机制的角度上说new A()等价于Class.forName("com.yan.A").newInstance(),所以加
载操作也可以简化
new Driver();

如果使用JDBC高版本驱动时实际上还可以省略加载步骤

请添加图片描述

2、获取连接

可以通过驱动管理器DriverManager类获取和数据库系统的连接

Connection conn=DriverManager.getConnection("连接串","连接数据库的用户名称","对应的
口令")

连接串用于代表需要连接的数据库,连接串的标准jdbc主协议:子协议:其它部分 ,但是不同的数据库系统其对应的连接串不同。例如连接oracle则驱动串为oracle.jdbc.OracleDriver ,连接串为jdbc:oracle:thin:@localhost:1521:test

// 受检型异常 ClassNotFoundException
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test?
serverTimezone=UTC", "root", "123456");
System.out.println(conn); //com.mysql.cj.jdbc.ConnectionImpl@365185bd

注意:数据库连接属于稀有资源,所以需要使用时进行创建,使用完毕必须结束关闭,不能依赖于垃圾 回收。建议使用try/finally结构

3、构建语句对象

在与特定数据库建立连接后,就可以发送SQL语句,在发送SQL语句之前需要创建一个语句对象最古老的方式是使用Statement对象

Statement stmt=conn.createStatement();
ResultSet res=stmt.executeQuery("select * from tb_student");

一般不建议使用Statement对象,这个对象用于提交静态sql语句。有sql注入漏洞,建议使用Statement 的子接口PreparedStatement

  • Statement对象中提供了executeQuery方法来执行查询操作,这个方法会返回查询结果集ResultSet类对象,其中包含SQL语句的查询结果

  • Statement对象中提供了executeUpdate方法来执行修改操作,这个方法会返回一个int值,表示sql的增删改操作所影响的数据行数

在test数据库中有一个表tb_student

需要查询tb_student表

//注意导入包时不要出现错误
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Test1 {
public static void main(String[] args) throws Exception {
// 受检型异常 ClassNotFoundException
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test?
serverTimezone=UTC", "root","123456");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from tb_student");
}
}

4、接收查询结果集

JDBC中使用ResultSet对象来表示查询结果集,可以理解为一个指向满足查询结果的行指针,其中并不存放实际数据,所以在使用结果集之前不能关闭连接

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from tb_student");

5、遍历处理结果集

注意:连接不能关闭

ResultSet对象包含了执行查询后满足条件的所有行,提供了对应的访问方法,有一组对应的getXxx方法获取指定列的值

while(rs.next()){ //用于移动行指针,同时判断是否有数据,如果有数据则返回为true,否则
false
/*
* | tb_student | CREATE TABLE `tb_student` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`age` int(11) DEFAULT '16',
`sex` tinyint(1) DEFAULT '1',
`dept` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 |
*/
//由于历史原因,列序号从1开始
long id=rs.getLong(1);//指定列时可以使用序号,也可以使用列名称,一般建议使用列名
称,因为数据表的结构会有变动
String name=rs.getString("name");
int age=rs.getInt("age");
boolean sex=rs.getBoolean("sex");
System.out.println(id+":"+name+":"+age+":"+sex);
}

一般列是什么数据类,则应该使用对应类型的getXxx方法,实际上使用getString可以获取任意类型的列中的数据

如果执行修改操作,则返回的是int类型数据,表示受影响行数

Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql:///test?
serverTimezone=UTC", "root", "123456");
Statement stmt = conn.createStatement();
int len=stmt.executeUpdate("update tb_student set dept='材料系' where id=8");
if(len>0)
System.out.println("修改成功!");
else
System.out.println("修改失败!");

6、关闭对象

手动关闭ResultSet、Statement和Connection,注意这里必须保证Connection对象关闭 建议使用try/finally结构

正向打开对象,逆向关闭对象

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test3 {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;String sql="select * from tb_student";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql:///test?
serverTimezone=UTC", "root", "123456");
stmt = conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
long id=rs.getLong("id");
String name=rs.getString("name");
boolean sex=rs.getBoolean("sex");
System.out.println(id+"\t"+name+"\t"+(sex?"男":"女"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
} catch (SQLException e2) {
e2.printStackTrace();
}
try {
if (stmt != null)
stmt.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
null)
rs.close();
} catch (SQLException e2) {
e2.printStackTrace();
}
try {
if (stmt != null)
stmt.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

http://chatgpt.dhexx.cn/article/lACYo5AU.shtml

相关文章

Java使用JDBC步骤

学习目标: Java使用JDBC步骤 学习内容: 1.为项目导入mysql-jdbc的jar包 2.初始化驱动 3.建立与数据库的连接 4.创建Statement 5.执行SQL语句 6.关闭连接 7.使用try-with-resourced的方式自动关闭连接 知识详解: JAVA使用JDBC步骤&#xff…

JDBC之程序编写步骤

当当当当~~~~欢迎大家阅读,今天我们学习JDBC程序编写步骤 以上是JDBC程序编写步骤的流程图 步骤一:导入java.sql包 步骤二:加载并注册驱动程序 java.sql.Driver 接口:是所有 JDBC 驱动程序需要实现的接口,这个接口是…

JDBC具体的操作步骤

目录 1.加载驱动 Driver 2.获得连接 3.执行指令 4.关闭资源 一: 首先先建立一个包为:com.zking.util 包中建立一个类:DBHelper类//帮助类 使用静态代码块加载驱动 2. 定义连接语句 3. 获得连接方法 : 4. 关闭资源:连接c…

浅谈JDBC,JDBC实现的几大步骤

前言 当我们学完数据库之后总觉得数据库和java之间是没有联系的,但是我们还是要去学数据库是为了什么呐?现在就来了,现在我就来给大家讲讲怎么将数据库和java进行联系,我们也可以用数据库代替以前的IO流来存东西了。 JDBC 概述 …

【JDBC-1】jdbc编程六大步骤

文章目录 jdbc编程步骤1.注册驱动2.获取数据库的连接3.获取数据库操作对象4.执行sql语句5.处理查询结果集6.释放资源 jdbc编程步骤 jdbc编程6步:1.注册驱动2.获取连接3.获取数据库操作对象4.执行sql5.处理查询结果集6.释放资源1.注册驱动 注册驱动的作用&#xff…

如何使用jetty

一直都听说jetty跟Tomcat一样,是一个web容器。之前做项目的时候,也使用过jetty,不过当时jetty是作为一个插件,跟maven集成使用的。那个时候,由于是第一次使用jetty,感觉jetty跟Tomcat并不一样,启…

BAT优秀工具

1、腾讯智图:图片压缩优化平台 地址:智图_图片压缩在线工具_在线制作webp 智图可以帮你把图片压缩到很小,但是还是很清晰!有很多网站限制图片上传的大小,用这个就可以!在线的,很方便&#xff01…

GifCam2.0使用

GifCam2.0使用 有时候我们需要制作一个gif,那么我们可以用GifCam 。 GifCam 是一款能够轻松录制gif的软件,它体积小、免安装。它可以给现有的gif增加帧数。编辑gif图片,如添加文字、删除某些帧、修改特定帧的延迟等。 下载地址:h…

荒野大镖客2-解压即玩

游戏名称:荒野大镖客2发行时间:2019年12月6日游戏详细介绍:https://store.steampowered.com/app/1174180/Red_Dead_Redemption_2/ (STEAM网站)不了解这是什么游戏的可以看一下版本介绍:该版本由EMPRESS小组…

火炬2 贴吧导航(大纲1.0)

火炬2 贴吧导航(大纲1.0) time/2020.7.25 前言 因前导航贴中部分链接失效或失时,为方便吧友查阅攻略及数据,故作此帖。 注:此贴仅作导航,不回复不解疑,有个人疑惑请按正常流程询问其他吧友。 …

MYSQL 5.7 分组 1055解决方法

1.免安装版 在根目录下创建 my.ini 将一下内容拷贝到my.ini,然后重启服务即可 [mysqld] sql_mode‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’ 相信有些小伙伴在使用数据库的过程中会经常频繁的启动…

iSystem调试器系列文章—1.连接测试

iSystem调试器系列文章——1.连接测试 做嵌入式开发测试的人一般情况下都听过Lauterbach、iSystem、PLS这三个大名鼎鼎的调试器品牌。可惜的是博主在之前的工作中从未接触过这些大神级的调试器,只闻其声不见其人。今天有幸从厂家获取到了iSystem的IC5700调试器&…

小工具推荐

我们在使用计算机的过程中,总会有各种各样的需求,也许是为了颜值,也许是为了工作效率,有或是为了方便。这些需求系统本身没有提供相应的功能,或者系统提供的功能并不是那么好用。我们就渴望找一个好的工具代替。 本更新…

前端音视频之WebRTC初探

WebRTC Web Real-Time Communication 网页即时通信 WebRTC 于 2011 年 6 月 1 日开源,并在 Google、Mozilla、Opera 等大佬们的支持下被纳入 W3C 推荐标准,它给浏览器和移动应用提供了即时通信的能力。 WebRTC 优势及应用场景 优势 跨平台(Web、Window…

(常规更新)1.C++入门第一讲——编程如此简单

格言:自立才能自主,靠人更须靠己。有志之人立长志,无志之人常立志。千里之行,始于足下;艰难困苦,玉汝于成。少壮不努力,老大徒伤悲。✊✊✊ 📫 如果您觉得文章里有错误的地方&#x…

MySQL8.0的下载及安装 (8.0.15)

MySQL8.0的下载及安装 (一)1.下载MySQL8.0.15 (两种方式1.csdn下载(无积分联系我私发)2.官网下载) csdn下载链接:https://download.csdn.net/download/qq_42397270/19886950 1.访问MySQL官网:https://www…

JDK17解压版---安装与配置与查看版本

JDK17解压版下载地址:https://www.oracle.com/java/technologies/downloads/#jdk17-windows bin目录 :存放各种工具命令(如 javac、java、javap等)。 conf 目录:里面存放一些配置文件 。 include目录:存…

FastReport .NET 2023 Crack

FastReport .NET 2023 Crack  Blazor WebAssembly支持-为FastReport.NET Enterprise及更高版本的所有者添加了FastReport.Blazor.Wasm包。现在,您可以使用Razor组件在WebAssembly应用程序中显示报告。Blazor WebAssembly支持目前处于测试阶段。 能够打开另一个报告…

Total Software Deployment为您的企业网络管理软件部署

Total Software Deployment为您的企业网络管理软件部署 Total Software Deployment 可帮助您在本地网络上部署软件。它允许您同时在多台计算机上安装多个软件包。它包括软件库存管理、自动网络扫描和多种类型安装包的并发部署。 总体软件部署功能 轻松部署软件- 让 Total Softw…

MySQL绿色版安装教程

在windows上安装mysql数据库有时候会出现怎么都按照不上去的情况,特别是在卸载或者安装过程中终止之后在重新安装的时候,会出现莫名其妙的问题,接下来我们来简单的通过使用免安装版的MySQL避免这种问题.其中操作过程如下: 去Oracle官网下载MySQL的对应版本(https://dev.mysql.…