Java 如何通过JDBC 操作MySQL数据库

news2024/9/21 12:42:34

Java 如何通过JDBC 操作MySQL数据库

    • 开发准备
    • 实际开发
      • 1,加载并注册JDBC 驱动
      • 2,创建数据库连接
      • 3,创建Statement 对象
      • 4,遍历查询结果
      • 5,关闭连接,释放资源
    • 完整代码实现

JDBC 是Java 数据库连接,即 Java DataBase Connectivity。JDBC 可让Java 通过程序操作关系型数据库,可基于驱动程序实现与数据库的连接与操作。JDBC 有统一的API ,提供一致的开发过程。其功能强大,执行效率高,可处理海量数据。

开发准备

在Navicat 中新建一个数据库,注意字符集 的选择,如下图所示:

image-20230219214303659

然后运行 SQL 文件创建的表如下图:
image-20230219214448043

接着在mysql 官网下载 mysql8驱动程序如下:

image-20230219214824131

实际开发

1,加载并注册JDBC 驱动

在idea 中创建一个新工程,然后在工程名上右键,新建一个目录“lib”,用于添加所需依赖:

image-20230219215935370

image-20230219220007385

接着在idea中,执行 File -> Project Structure -> Modules -> Dependencies ,接着点击右边的 ”+“ ,添加mysql 驱动依赖,如下图所示:

image-20230219220140300

然后就可以通过如下语句在程序中加载并注册JDBC 驱动:

Class.forName("com.mysql.cj.jdbc.Driver");

Class.forName 用于加载指定的JDBC 驱动类,其本质是通知JDBC 注册这个驱动类。

2,创建数据库连接

通过如下程序语句创建数据库连接:

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
                    "root", "123456"
            );
  • Connection 对象用于JDBC 与数据库的网络通信对象,所有数据库的操作都是建立在Connection 基础上。
  • DriverManager 用于注册 / 管理JDBC 驱动程序,DriveManager.getConnection(连接字符串,用户名,密码),其返回值Connection 对象,对应数据库的物理网络连接。

3,创建Statement 对象

通过如下程序语句实现Statement 对象的创建:

Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from employee where dname='研发部'");

说明:ResultSet 表示结果集。

4,遍历查询结果

如下程序语句可以实现结果集的遍历查询:

while (rs.next()) {
                Integer eno = rs.getInt(1); //eno
                String ename = rs.getString("ename");
                Float salary = rs.getFloat("salary");
                String dname = rs.getString("dname");
                System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);
            }

5,关闭连接,释放资源

关闭连接,这里我们可以直接通过语句:

 conn.close();

即可,因为底层的连接被关闭,其他的连接自然就被关闭了。

完整代码实现

package com.imooc.jdbc.sample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * 标准JDBC操作五步骤
 */
public class StandardJDBCSample {
    public static void main(String[] args) {
        Connection conn = null;
        try {
            //1. 加载并注册JDBC驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2. 创建数据库连接
            conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
                    "root", "123456"
            );
            //3. 创建Statement对象
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from employee where dname='研发部'");
            //4. 遍历查询结果
            while (rs.next()) {
                Integer eno = rs.getInt(1); //eno
                String ename = rs.getString("ename");
                Float salary = rs.getFloat("salary");
                String dname = rs.getString("dname");
                System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            try {
                if (conn != null && conn.isClosed() == false) {
                    //5. 关闭连接,释放资源
                    conn.close();
                }
            }catch(Exception ex){
                ex.printStackTrace();
            }
        }

    }
}

程序运行结果如下:

image-20230219222730616

特别说明 :以上程序只是为了说明应用 JDBC 开发的标准流程。

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

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

相关文章

客户服务知识库的最佳实践7个步骤

每个公司的声誉都依赖于客户,如果客户因为想要购买你的产品找到你,但是了解到你的客户服务做的不好,可能也会放弃你的产品,就像市场营销依赖于潜在客户的关系一样,公司的服务部门也需要依赖于现有客户的关系&#xff0…

OCT 医学图像分类

目录1. OCT 图像分类2. OCT图像数据集3. OCT图像预处理4. 特征提取5. 实验结果及分析github地址: https://github.com/aishangcengloua/OCT_Classification 1. OCT 图像分类 视网膜光学相干断层扫描(OCT)是一种成像技术,用于捕获活体患者视网膜的高分辨率横截面。…

Skywalking8.5.0-ES7 Rancher部署及ES高可用部署过程记录

背景 近期本司内部需要用到Skywalking进行链路追踪和日志收集,故记录下部署过程,方便后期学习与查询。 ElasticSearch高可用部署 ## 1.docker启动elasticsearch,并将内存设置的稍微大一些,然后进行端口和配置文件映射 docker run --name…

windows 安装Qt

下载 下载地址https://download.qt.io/,此文已5.7.0为例子。 根据图片依次选择即可。 安装 安装过程参考另一篇文章Ubuntu 安装 Qt5.7.0即可 配置环境变量 ps:我就是之前没配置环境变量,直接使用创建项目,项目源码直接运行是…

Shader Graph简介

使用着色器(shader)和材质(material),我们能够创造出非常多有趣的效果。除了Unity自带的shader外,还可以自己编写shader或使用其他人所编写的shader。编写shader通常需要我们了解shader编程语言的语法和相关…

IO流详解及常用方法

1.1. 什么是IO流IO流: Input/Output Stream流: 指的是一串流动的数据, 在数据在流中按照指定的方向进行流动。 实现数据的读取、写入的功能。1.2. IO流的使用场景使用File类, 只能做关于文件的操作, 获取属性、 创建文件、 删除文…

数字化时代,如何做好用户体验与应用性能管理

引言 随着数字化时代的到来,各个行业的应用系统从传统私有化部署逐渐转向公有云、行业云、微服务,这种变迁给运维部门和应用部门均带来了较大的挑战。基于当前企业 IT 运维均为多部门负责,且使用多种运维工具,因此,当…

[numpy算法复现]-第27节 Apriori算法原理(相关性)

文章目录 0. 结论1. 算法起源2. Apriori算法思想2.1 算法综述2.2 示例0. 结论 Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策。比如在常见的超市购物数据集,或者电商的网购数据集中,如果…

公会发展计划(GAP)第三季

继前两季发布的公会发展计划取得成功之后,Yield Guild Games 现在推出了第三季的公会发展计划(GAP)。GAP 在第二季有了显著的增长,有超过 3000 个成就 NFT 被铸造。GAP 是以成就为导向的社区代币分配协议,下一次迭代将…

实验一 基于MATLAB语言的线性离散系统的Z变换分析法

实验一 基于MATLAB语言的线性离散系统的Z变换分析法 一、实验目的 1. 学习并掌握 Matlab 语言离散时间系统模型建立方法; 2.学习离散传递函数的留数分析与编程实现的方法; 3.学习并掌握脉冲和阶跃响应的编程方法;…

智慧校园:电子班牌+家长端小程序源码

说到智慧校园家长端微信小程序大家有多少了解呢?它有哪些优点和功能呢? 下面就来说说智慧校园家长端微信小程序的特色和优点。 1.学生通过闸机人脸、刷卡进出校,如出校则推送给家长小程序孩子已离校的信息,如进校则实时推送孩子已进校信息…

解决Visual Studio Code 热键冲突

因为最近很火的ChatGPT,更新了VSCode的版本,但是界面和配置有了一些变化,原来的热键也有所调整,在使用markdown的时候,enter键竟然都出现了冲突,在此记录一下操作步骤,非常简单。 报错如下&…

为什么要用数据库视图?

视图的定义 视图(View)是一种虚拟的表,其结构和数据来自于一个或多个基本表,可以被当作普通表一样进行查询操作,但实际上不存储任何数据。在数据库中,视图可以被看作是一种数据访问的方式,它可…

16.hadoop系列之MapReduce之MapTask与ReduceTask及Shuffle工作机制

1.MapTask工作机制 以上内容我们之前文章或多或少介绍过,就已网络上比较流行的该图进行理解学习吧 MapTask分为五大阶段 Read阶段Map阶段Collect阶段溢写阶段Merge阶段 2.ReduceTask工作机制 ReduceTask分为三大阶段 Copy阶段Sort阶段Reduce阶段 3.ReduceTask并…

eBPF双子座:天使or恶魔?

启示录 新约圣经启示录认为:恶魔其实本身是天使,但炽天使长路西法背叛了天堂,翅膀变成了黑色,坠落地狱,堕落成为恶魔。这些恶魔主宰著黑暗势力,阻碍人类与上帝沟通,无所不用其极。所以可以说天…

box-shadow详解

box-shadow详解 属性定义及使用说明 box-shadow属性可以设置一个或多个下拉阴影的框。 语法 box-shadow: h-shadow v-shadow blur spread color inset;注意:boxShadow 属性把一个或多个下拉阴影添加到框上。该属性是一个用逗号分隔阴影的列表,每个阴…

使用多种算法对sin函数进行拟合-学习记录

1.使用linear层拟合 原代码链接在这里,效果如下: 2.使用LSTM预测 原代码链接在这里,效果如下: 3.使用GAN拟合 忘记代码哪里找的了,不过效果很差。 4.使用LSTM-GAN 这个代码在GitHub上找的,然后改了改&…

3、内存管理

文章目录1、内存的基础知识1.1、什么是内存?1.2、进程的运行原理--指令1.3、逻辑地址 & 物理地址1.4、从写程序到程序运行1.5、装入模块到运行1.6、装入的三种方式--绝对装入1.7、装入的三种方式--静态重定位1.8、装入的三种方式--动态重定位(重定位…

移动WEB开发四、rem布局

零、文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789个人博客-GiteePages:https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee:https://gitee.com/bluecusliyou/TechLearnGithub:https:…

树的概念及结构

前言 什们是树?树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。树 (1)树的特点 有一个特殊的…