JDBC(简介、入门与IDEA中导入MySQL的驱动)

(建议学完 MySQL 的基础部分)

JDBC——简而言之:用 Java 语言操作数据库。

Java DataBase Connectivity(Java 语言连接数据库)


目录

一、引言

(1)基本介绍

(2)JDBC 简介

1、JDBC 概念

2、详细介绍

3、JDBC 的本质

二、JDBC 快速入门

(1)用 Java 代码操作对应的 MySQL 数据库的基本流程

(2)基本步骤 

0、创建工程,并导入对应的驱动 " jar 包 "。

1、注册导入的驱动。

2、获取连接。

3、定义 SQL 语句。

4、获取执行的 SQL 对象。

5、执行 SQL。

6、处理返回结果。

7、释放资源

(3)进入 IDEA 进行实操(准备阶段)

1、首先先创建一个新的空工程。

2、然后再给这个空的工程进行一些配置。

​编辑

3、接着创建一个新的模块(语言选 JAVA 的)

4、创建完模块之后,要导入 MySQL 的驱动 " jar 包"。

5、开始创建一个类

(4)进入 IDEA 进行实操(开始代码编写阶段) 

1、该类的全部代码(代码注释解释了很多,流程与上面同步)

2、注意


一、引言

(1)基本介绍

1、JDBC 就是使用 Java 语言操作关系型数据库的一套 API

以下就是 JDBC 的一个示例代码:

注意:(现在这部分代码我们大致可以认识一些东西)

1、用户名、密码。

2、基本的 SQL 语句。(上面的 UPDATE 修改语句)通过这串代码,将SQL语句发送给MySQL 数据库,然后 MySQL 数据库执行SQL,就可以看到数据表里面的修改。

(2)JDBC 简介
1、JDBC 概念
  • JDBC 就是使用 Java 语言操作关系型数据库的一套 API
  • 全称:( Java DataBase Connectivity ) Java 数据库连接
2、详细介绍

当我们写 Java 代码, 就要涉及到操作关系型数据库。

一般的情况同一套Java代码,不能去操作不同的关系型数据库。

1、但是为了实现这样的需求,就诞生了一个 JDBC。它定义了一套操作所有的关系数据库的规则,就可以实现同一套 Java 代码操作不同的数据库。(其实就是定义了一套接口)

2、然而,JDBC 它只是定义了接口,没有实现类。实现类是各个数据库去给自己定义的。

3、如果以后听到需要弄一个 MySQL 的驱动,其实就是搞一个 MySQL 对应 JDBC 的实现类。搞一个 " jar 包 " ,它里面有很多的实现类,拿过来直接用就行。

3、JDBC 的本质

1、官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。

2、各个数据库厂商去实现这套接口,提供数据库驱动jar包。

3、我们可以使用这套接口 ( JDBC ) 编程,真正执行的代码是驱动 jar 包中的实现类

4、这样做的好处就是可以:

同一套代码,可以操作不同的关系型数据库

  • 各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发。

(可以做到数据库灵活的切换)

  • 可随时替换底层数据库,访问数据库的Java代码基本不变。

(基于接口编程)所以就要把对应的关系数据库的对应的 "jar包" 导入到工程里去就好了。

二、JDBC 快速入门

(1)用 Java 代码操作对应的 MySQL 数据库的基本流程

(2)基本步骤 
0、创建工程,并导入对应的驱动 " jar 包 "

1、注册导入的驱动。
  • Class.forName("com.mysql.jdbc.Driver");

Class.forName...(将一个类加载到内存)

2、获取连接。

为了以后的通过 Java 代码发送 SQL 语句给 MySQL 服务器,所以得之间连接起来。

  • Connection conn = DriverManager.getConnection(url, username,password);

(连接对象:Connection)

3、定义 SQL 语句。
  • String sql = " update... " ;

(要求把 SQL 语句编写好。)

4、获取执行的 SQL 对象。
  • Statement stmtI conn.createStatement();

(执行 SQL 语句之前,需要获取 SQL 对象。)

5、执行 SQL。
  • stmt.executeUpdate(sql);

(其实就是通过前面获取到的 SQL 对象,把这个 SQL 语句发送给数据库,让这个数据库去执行相关的数据操作)

6、处理返回结果。

Java 代码获得 MySQL 的返回结果,再去进行处理。)

7、释放资源

(整个过程做完之后,就要释放调资源。)

(3)进入 IDEA 进行实操(准备阶段)
1、首先先创建一个新的空工程

2、然后再给这个空的工程进行一些配置。

(这边建议 JDK 配置成1.8 的,那么编译的版本也要调成 8 版本)

  • 如果是老版的 IDEA:

  • 现在作者本人的是新版的

3、接着创建一个新的模块(语言选 JAVA 的)

(项目模块的工程名:jdbc-demo)

现在就是整个创建后的结构,这样就可以在里面写代码了。

4、创建完模块之后,要导入 MySQL 的驱动 " jar 包"。

(通常我们的 " jar 包" 会单独存放在一个目录下面 )

我们会在模块上去 new 一个 Directory(目录)。在这里面存放 " jar 包"。

我们可要去 MySQL 官网去寻找自己想要的 " jar 包"。

MySQL 下载对应 jar包的地址icon-default.png?t=N7T8https://downloads.mysql.com/archives/c-j/

这里我为了自学的视频相对应,我选择下载的版本是:5.1.48

(下好之后把它复制放到之前创建的目录下:lib

复制完之后,还没有成功。要让这个创建好的工程去识别这个" jar 包"

首先先右键这个" jar 包"。(添加为库)


然后我们的驱动" jar 包"和工程都已经弄好了。

5、开始创建一个类

(在里面去完成之前的所有流程)

(4)进入 IDEA 进行实操(开始代码编写阶段) 
1、该类的全部代码(代码注释解释了很多,流程与上面同步)
package com.feisi.jdbc;import com.mysql.jdbc.Driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
/*** @Title: JDBCDemo* @Author HeYouLong* @Package com.feisi.jdbc* @Date 2024/6/20 下午9:18* @description: JDBC入门*/
public class JDBCDemo {public static void main(String[] args) throws Exception {  //因为后面会有很多个异常,直接抛出最大的//1、注册驱动Class.forName("com.mysql.jdbc.Driver");//记住固定写法//jdbc:mysql: 后面写 mysql对应的ip端口和数据库名词//127.0.0.1(localhost) mydb:所连接的数据库名称String url = "jdbc:mysql://127.0.0.1:3306/mydb";//将来写自己对应的就行String username = "root";String password = "1234";//2.获取连接 (这个类有一个静态方法)Connection conn = DriverManager.getConnection(url,username,password);//3.定义SQL语句//如:update ... set ... where ...String sql = "";//4.获取执行sql的对象StatementStatement stmt = conn.createStatement();//5.执行sql,方法参数传入sql语句就行了//这个方法返回的是 数据库表中受影响的行数int count=stmt.executeUpdate(sql);//6.处理结果System.out.println(count);//7.释放资源//这一块有两个地方需要释放:conn 与 stmt//释放顺序是:先开后放stmt.close();conn.close();}
}
2、注意

1、IDEA 有提示,很方便。

2、这个方法返回的是一个连接对象


这篇博客的内容就到这里。 

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

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

相关文章

2024华为OD机试真题- 计算三叉搜索树的高度-(C++/Python)-C卷D卷-100分

2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述 定义构造三叉搜索树规则如下: 每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。查找的规则是: 1.如果数小于节点的数减去500,则将数插入节点的左子树 2.如果数大于…

【配置】Notion自动化备份到github方案

步骤 打开notion网页,获取到需要的值 token_v2 找到请求getSpaces的 Cookie 值 token_v2 space_id 找到请求getSpaces的响应结果space,如下图: file_token 找个页面点击导出,之后拿到这个配置项 注意:配置项会过期&#xff0c…

低版本火狐浏览器报错:class is a reserved identifier

低版本火狐浏览器报错:class is a reserved identifier 原因:react-dnd,dnd-core 等node包的相关依赖有过更新,使得在低版本火狐浏览器中不支持 class 解决方法:在使用webpack打包构建时,编译排除node_modu…

Unity OpenCVForUnity 安装和第一个案例详解 <一>

目录 一、资源简介 二、安装使用 1.下载案例Demo 2.移动StreamingAssets文件夹 3.添加场景 三、今日案例 1.案例Texture2DToMat Example 2.什么是Mat? 3.如何把Texture2D变成Mat (1).初始化Mat (2).Cv_…

【React Native】measureInWindow在安卓上无法正确获取View在屏幕上的布局信息

问题描述: 在React Native中,我们可以使用measureInWindow的方式去获取一个View在屏幕中的位置信息: 下面这个Demo中,我们写了一个页面HomePage和一个列表项组件ListItemA,我们期望每过5s监测一次列表中每一项在屏幕中…

RabbitMQ(六)仲裁队列、流式队列、异地容灾(联邦队列Federation Queue)

文章目录 仲裁队列1、创建交换机2、创建仲裁队列3、验证主节点宕机不影响消息发送和接收 流式队列(不推荐,Kafka主场)概念 异地容灾一、Federation插件概述 二、Federation交换机1、总体说明2、准备工作3、启用联邦插件4、添加上游连接端点5、…

【深度学习】TCN,An Empirical Evaluation of Generic Convolutional【二】

文章目录 膨胀卷积什么是膨胀卷积膨胀卷积公式PyTorch代码 从零开始手动实现一个1D膨胀卷积,不使用PyTorch的nn.Conv1d1. 基本概念2. 手动实现1D膨胀卷积 TCN结构如何使用TCN源码说明1. Chomp1d 类2. TemporalBlock 类3. TemporalConvNet 类 使用方法 膨胀卷积 什么…

DVWA - Brute Force

DVWA - Brute Force 等级:low ​ 直接上bp弱口令爆破,设置变量,攻击类型最后一个,payload为用户名、密码简单列表 ​ 直接run,长度排序下,不一样的就是正确的用户名和密码 ​ 另解: 看一下…

【SpringBoot + Vue 尚庭公寓实战】公寓杂费接口实现(八)

【SpringBoot Vue 尚庭公寓实战】公寓杂费接口实现(八) 文章目录 【SpringBoot Vue 尚庭公寓实战】公寓杂费接口实现(八)1、公寓杂费业务介绍2、公寓杂费逻辑模型介绍3、接口实现3.1、保存或更新杂费值3.2、保存或更新杂费名称3…

Android【SDK】 SDK是如何开发的,怎么打包aar包

文章目录 一、Android SDK开发示例工程二、Android SDK的开发三、打包aar包四、Android SDK的使用 一、Android SDK开发示例工程 本教程工程Git链接:https://gitcode.com/xiaohuihui1400/AndroidSdkExample/overview 二、Android SDK的开发 新建项目,…

Photoshop中图像美化工具的应用

Photoshop中图像美化工具的应用 Photoshop中的裁剪工具Photoshop中的修饰工具模糊工具锐化工具涂抹工具 Photoshop中的颜色调整工具减淡工具加深工具海绵工具 Photoshop中的修复工具仿制图章工具污点修复画笔工具修复画笔工具修补工具内容感知移动工具红眼工具 Photoshop中的裁…

Redis持久化主从哨兵分片集群

文章目录 1. 单点Redis的问题数据丢失问题并发能力问题故障恢复问题存储能力问题 2. Redis持久化 -> 数据丢失问题RDB持久化linux单机安装Redis步骤RDB持久化与恢复示例RDB机制RDB配置示例RDB的fork原理总结 AOF持久化AOF配置示例AOF文件重写RDB与AOF对比 3. Redis主从 ->…

智能制造uwb高精度定位系统模块,飞睿智能3厘米定位测距芯片,无人机高速传输

在科技日新月异的今天,定位技术已经渗透到我们生活的方方面面。从手机导航到自动驾驶,再到无人机定位,都离不开精准的定位系统。然而,随着应用场景的不断拓展,传统的定位技术如GPS、WiFi定位等,因其定位精度…

小摩法兴纷纷转多,看涨港股的时机来了吗?

恒生指数今日高开一度上涨89点报18520点,创近两周高。之后持续震荡下行;恒指临近中 午跌幅扩大,恒生科技指数一度跌近1.5%。截止收盘,恒生指数跌0.52%,盘面上,石油、煤炭、环保、建筑节能等板块涨幅居前&a…

VScode中js关闭烦人的ts检查

类似如下的代码在vscode 会报错,我们可以在前面添加忽略检查或者错误,如下: 但是!!!这太不优雅了!!!,js代码命名没有问题,错在ts上面,…

112、路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点…

简单且高效的水域物探轨迹坐标转换程序

简单且高效的水域物探轨迹坐标转换程序 前言 水上测线的高精度定位是水域物探的难题,水域磁法、水域地震实施时常采用船舶拖拽传感器进行走航式观测,GPS仪器放在船舶上测量,造成船舶位置与传感器位置存在偏差,后期资料整理需要校…

QT-QPainter实现一个可切换的开关控件

1、效果 2、核心代码 #ifndef SWITCH_H #define SWITCH_H #include <QWidget> #include <QTimer>

Javase.String 类

String 类 【本节目标】1. String类的重要性2. 常用方法2.1 字符串构造2.2 String对象的比较2.3 字符串查找2.4 转化2.5 字符串替换2.7 字符串截取2.8 其他操作方法2.9 字符串的不可变性2.10 字符串修改 3. StringBuilder和StringBuffer3.2 面试题&#xff1a; 4. String类oj4.…

【MySQL】 -- 用户管理

1. 权限 如果我们只能使用root用户&#xff0c;这样存在安全隐患。这时&#xff0c;就需要使用MySQL的用户管理。创建出非root用户&#xff0c;限制其权限。 权限这个概念拿出来就是用来限制非root用户的。这样从技术手段上保证了数据的安全性和完整性&#xff0c;防止有人删库…