MySQL---JDBC编程

文章目录

  • 什么是JDBC?
  • JDBC的工作原理
  • JDBC的使用
    • 添加依赖
    • 创建数据源DataSource
    • 创建数据库连接Connection
    • 创建操作命令Statement
    • 执行SQL指令
    • 释放资源
  • 通过JDBC演示CRUD
    • 新增
    • 查询
    • 修改
    • 删除

什么是JDBC?

JDBC:Java Database Connectivity,即Java数据库连接。是一种用于执行SQL语句的Java API,它是Java的数据库连接规范。

API:Application Programming Interface,即应用程序编程接口。它提供了一组类/方法,可以让程序员直接调用。

不同的数据库厂商都会提供各自的一组数据库API供程序员使用,这样就会带来两个问题:1.程序员的学习成本太高,得学习多种API来使用不同的数据库 2. 当哪一天需要给项目更换数据库时,改动非常大,不方便。 而Java是一门可移植性高的语言,它为了解决这些问题就提供了一组统一风格的数据库API,然后要求各个厂商适配这些API,程序员只要掌握这一组API就可以操作各种数据库了,这组API就叫做JDBC

JDBC的工作原理

JDBC为多种关系型数据库提供了统一访问方式,

在这里插入图片描述

JDBC的使用

添加依赖

  1. 从网络获取到驱动资源
  2. 创建一个与src同级的目录,把刚才的驱动jar包拷贝进去

在这里插入图片描述
3. 右击新建好的目录,点击 Add as Library

在这里插入图片描述

创建数据源DataSource

		//1.创建数据源对象DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/learning?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("xu0123.");

创建数据库连接Connection

		//2.让代码和数据库服务器建立连接Connection connection = dataSource.getConnection();

创建操作命令Statement

		//3.构造要执行的SQL语句Scanner scanner = new Scanner(System.in);System.out.println("请输入要插入的学号");int id = scanner.nextInt();System.out.println("请输入要插入的姓名");String name = scanner.next();String sql = "insert into student values(?,?)";PreparedStatement statement = connection.prepareStatement(sql);statement.setInt(1,id);statement.setString(2,name);

执行SQL指令

		//4.执行SQL语句int n = statement.executeUpdate();

释放资源

		//5.关闭释放资源statement.close();connection.close();

通过JDBC演示CRUD

新增

查询

修改

删除

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

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

相关文章

Docker从入门到实战

Docker基本概念 1、解决的问题 1、统一标准 应用构建 ○ Java、C、JavaScript ○ 打成软件包 ○ .exe ○ docker build … 镜像应用分享 ○ 所有软件的镜像放到一个指定地方 docker hub ○ 安卓,应用市场应用运行 ○ 统一标准的 镜像 ○ docker run 容器化技术 …

小插曲 -- 使用Visual Studio Code远程连接香橙派

在之前的学习中,代码的修改和保存都依赖于“vi”指令,而不得不承认vi指令的编辑界面非常原始,所以,如果可以将代码编辑放到更友好的环境里进行无疑是一件大快人心的事情。 本节介绍如何通过Visual Studio Code来进行远程连接: Vi…

[SpringCloud] Eureka 与 Ribbon 简介

目录 一、服务拆分 1、案例一:多端口微服务 2、案例二:服务远程调用 二、Eureka 1、Eureka 原理分析 2、Eureka 服务搭建(注册 eureka 服务) 3、Eureka 服务注册(注册其他服务) 4、Eureka 服务发现…

计算机视觉与深度学习 | 非线性优化理论:图优化、高斯牛顿法和列文伯格-马夸尔特算法

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 计算机视觉与深度学习 | SLAM国内外研究现状 计算机视觉与深度学习 | 视…

Nginx负载均衡和备份和故障转移

如果你想要两台 Nginx 服务器配置访问同一个链接,通常意味着你可能想要以下几种配置: 负载均衡:两台 Nginx 服务器都工作,当访问者请求资源时,流量会在这两台服务器之间进行均衡分配。备份和故障转移:其中…

Flask 上传文件,requests通过接口上传文件

这是一个使用 Flask 框架实现文件上传功能的示例代码。该代码定义了两个路由: /upload:处理文件上传请求。在该路由中,我们首先从请求中获取上传的文件,然后将文件保存到本地磁盘上,并返回一个字符串表示上传成功。 /…

JavaScript中的模板直面量

模板直面量 const book {name: 你爱的书籍为};console.log(${book.name});//注意使用来输出name的属性值 我们可以省去function关键字,只用>来表示 let circle r > {const name 3.14;const area name * r * r;return area;}console.log(circle(2)); 还…

模仿企业微信界面

备注&#xff1a;未实现相关功能&#xff0c;仅模仿界面&#xff0c;不能作为商业用途&#xff0c;若有侵权&#xff0c;请联系删除。 <Window x:Class"模仿企业微信界面.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"…

xcode The document “...“ could not be saved

Today when I tried to save a file on my project I get an error message saying: The document “nameOfFile.m” could not be saved. I tried reinstalling xcode but no luck. The file can be edited with other editors and I see the same behavior on all my project…

【Python数据挖掘 基础篇】Python数据挖掘是个啥?

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 梦想从未散场&#xff0c;传奇永不落幕&#xff0c;博主会持续更新优质网络知识、Python知识、Linux知识以及各种小技巧&#xff0c;愿你我共同在CSDN进步 目录 一、了解数据挖掘 1. 数据挖掘是什么&#xff…

人工智能三要数之算法Transformer

1. 人工智能三要数之算法Transformer 人工智能的三个要素是算法、数据和计算资源。Transformer 模型作为一种机器学习算法&#xff0c;可以应用于人工智能系统中的数据处理和建模任务。 算法: Transformer 是一种基于自注意力机制的神经网络模型&#xff0c;用于处理序列数据的…

局域网内无法连接时间源?使用Chrony服务搭建时间源

1.安装chrony yum install -y chrony2.启动和设置配置文件 systemctl start chronyd3.设置为系统自动启动 systemctl enable chronyd以上服务器都需要安装 4.服务器192.168.1.63配置&#xff1a; 打开配置文件 /etc/chrony.conf 配置 allow 192.168.0.0/24 systemct…

Python---for循环中的两大关键字break和continue

之前在while循环中&#xff0c;也是用到两个关键字。 相关链接&#xff1a; 所以&#xff0c;在循环结构中都存在两个关键字&#xff1a;break和continue break&#xff1a;主要功能是终止整个循环 break&#xff1a;代表终止整个循环结构 continue&#xff1a;代表中止当…

ModbusTCP 转 Profinet 主站网关在博图配置案例

兴达易控ModbusTCP转Profinet网关&#xff0c;在 Profinet 侧做为 Profinet 主站控制器&#xff0c;接 Profinet 设备&#xff0c;如伺服驱动器&#xff1b;兴达易控ModbusTCP 和 Profinet网关在 ModbusTCP 侧做为 ModbusTCP 从站&#xff0c;接 PLC、上位机、wincc 屏等。 拓…

Docker harbor私有仓库部与管理

目录 搭建本地私有仓库 Docker容器的重启策略 Harbor 简介 什么是Harbor Harbor的特性 Harbor的构成 Docker harbor私有仓库部署 Harbor.cfg配置文件中的参数 维护管理Harbor 总结 搭建本地私有仓库 #首先下载 registry 镜像 docker pull registry#在 daemon.json …

Uniapp 原生设置的动态tabbar如何传参数动态 ?

在 UniApp 中设置原生 TabBar 并实现动态传参&#xff0c;可以通过使用Vue的响应式机制或者Vuex状态管理来实现。 以下是一个简单的示例&#xff1a; 以上这就是一个大概代码框架示例&#xff0c;具体实现应该根据项目需求做相应调整。欢迎来 注册 体验

四边形不等式

iai 冲突分段 套路题&#xff0c;基于单调性的分治优化。 记 f ( i , j ) f(i,j) f(i,j) 表示分 i i i 段&#xff0c;前 j j j 个的最小花费。 f ( i , j ) min ⁡ 0 ≤ k < j { f ( i − 1 , k ) c a l c ( k 1 , j ) } f(i,j) \min_{0 \le k < j}\{ f(i-1,k)…

nginx负载均衡(动静分离)

nginx负载均衡&#xff08;动静分离&#xff09; 文章目录 nginx负载均衡&#xff08;动静分离&#xff09;工作原理&#xff1a;环境说明&#xff1a;部署nginx负载均衡步骤&#xff1a;在负载均衡&#xff08;NGINX&#xff09;主机上做配置&#xff1a;测试&#xff1a;在浏…

0基础学习PyFlink——流批模式在主键上的对比

假如我们将《0基础学习PyFlink——使用PyFlink的Sink将结果输出到外部系统》中的模式从批处理&#xff08;batch&#xff09;改成流处理&#xff08;stream&#xff09;&#xff0c;则其在print连接器上产生的输出是不一样。 批处理 env_settings EnvironmentSettings \.new_…

两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称,根据属性名称处理两个list

需求:两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称.要求根据传入的属性(多个)判断两个list中是否有重复的对象, 如果重复则删除数据库的list, 然后合并两个list. /*** 处理导入和数据库重复数据* param list* param l…