JavaWeb | JDBC概述及IDEA连接MySQL

news2024/9/23 7:25:47

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏
本专栏地址:🔥JavaWeb
Java入门篇: 🔥Java基础学习篇

文章目录

  • 一、前言
  • 二、概述
    • 1.概述
    • 2.本质
    • 3.好处
  • 三、Java操作数据库的流程
  • 四、创建并配置IDEA项目
    • 1.创建空项目
    • 2.配置项目
    • 3.新建模块
    • 4.导入jar包
    • 5.将jar包导入libraries
  • 五、书写代码,连接数据库
    • 1.注册驱动
    • 2.获取连接
    • 3.定义sql
    • 4.获取执行sql的对象
    • 5.执行sql
    • 6.处理结果
    • 7.释放资源
    • 8.完整代码
  • 六、测试代码
  • 七、结语


一、前言

首先,学习JavaWeb就需要连接数据库,使用Java语言来对数据库进行一系列操作,本文作为一篇入门JDBC的文章,希望能够帮助到更多的初学者吧

二、概述

1.概述

JDBC 就是使用Java语言操作关系型数据库的一套API
全称:( Java DataBase Connectivity ) Java数据库连接

我们开发的同一套Java代码是无法操作不同的关系型数据库,因为每一个关系型数据库的底层实现细节都不一样。

如果这样,问题就很大了,在公司中可以在开发阶段使用的是MySQL数据库,而上线时公司最终选用oracle数据库,我们就需要对代码进行大批量修改,这显然并不是我们想看到的。

我们要做到的是同一套Java代码操作不同的关系型数据库,而此时sun公司就指定了一套标准接口(JDBC),JDBC中定义了所有操作关系型数据库的规则。

众所周知接口是无法直接使用的,我们需要使用接口的实现类,而这套实现类(称之为:驱动)就由各自的数据库厂商给出。

在这里插入图片描述

2.本质

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

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

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

3.好处

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

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

三、Java操作数据库的流程

第一步编写Java代码

第二步:Java代码将SQL发送到MySQL服务端

第三步:MySQL服务端接收到SQL语句并执行该SQL语句

第四步:将SQL语句执行的结果返回给Java代码

四、创建并配置IDEA项目

1.创建空项目

在这里插入图片描述

2.配置项目

在这里插入图片描述

3.新建模块

这里可以使用IDEA的一个快捷方式来直接新建和配置模块,点击下图中红框中的图案后选择模块(Model)即可新建模块
在这里插入图片描述
在这里插入图片描述
然后这里选择Java模块,以及对应的SDK即可新建并配置成功一个新的模块(在本项目中的)
在这里插入图片描述
这里自定义一个模块名称
在这里插入图片描述

4.导入jar包

导入jar包时不能直接将jar包复制黏贴到这个项目中,而是要在项目中再新建一个目录,在该目录下存放我们所要使用的jar包。这里给目录起名 lib
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.将jar包导入libraries

这里右键选中jar包我没有找到快捷键,于是采用了下面这种方式,测试过发现也是可以正常连接MySQL数据库并执行代码的

选择文件(file)—> 结构设置—>libraries,然后浏览文件,注意这里要 选择这个项目目录下的jar包,不要选择自己从网上下载放在别的地方的jar包
在这里插入图片描述
这样就创建并配置好一个项目了,接下来开始写代码
在这里插入图片描述

五、书写代码,连接数据库

1.注册驱动

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

2.获取连接

我们要获取链接就要用到getConnection方法,这里getConnection方法内的参数我们可以来看一下有以下这三个,那么我们就需要去自定义这三个变量,再定义一个变量去接收这个方法执行后的结果
在这里插入图片描述

  • url:需要链接的地址,jdbc:mysql://localhost:3306/[数据库名称]
  • 这里我的数据库名称是test,那么链接就是jdbc:mysql://localhost:3306/test

在这里插入图片描述

  • username:自己设定MySQL的用户名

  • password:自己设定的密码

String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "123456";
Connection c = DriverManager.getConnection(url,username,password);

3.定义sql

这里我们可以自己定义一个语句,增删改都可以,前提是这个语句不要有错

String sql = "update user set money = 5000  where id = 1 "

4.获取执行sql的对象

这里使用createStatement()方法,并自定义一个对象来接收

Statement stmt = c.createStatement();

5.执行sql

这里执行完sql语句后我们要用一个变量去接收它,这样才能处理这个结果,也就是打印输出这个结果,那么就需要用到executeUpdate()方法

int count = stmt.executeUpdate(sql);

6.处理结果

在MySQL执行完成后,要将结果传送到IDEA中,并打印输出处理的结果

System.out.println(count);

7.释放资源

在结束整个程序后,要关闭上面两个方法,使用.close方法来释放资源

stmt.close();
c.close();

8.完整代码

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

public class jdbcDemo1 {
    public static void main(String[] args) throws Exception {
        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");

        //获取连接
        String url = "jdbc:mysql://localhost:3306/test";
        String username = "root";
        String password = "123456";
        Connection c = DriverManager.getConnection(url,username,password);

        //定义sql
        String sql = "update user set money = 5000  where id = 1 ";

        //获取执行sql的对象
        Statement stmt = c.createStatement();

        //执行sql
        int count = stmt.executeUpdate(sql);

        //处理结果
        System.out.println(count);

        //释放资源
        stmt.close();
        c.close();

    }
}

六、测试代码

这里我们就写了一条数据,希望通过代码来对这个表中的数据进行更新,将zhangsan的money数据改为5000,代码具体如上,如果sql语句看不懂的话可以看博主的《数据库》相关专栏
在这里插入图片描述

执行完毕,控制台输出1,代表有一条数据发生变化,我们再去Navicat上看一下数据(注意Navicat需要刷新一下才会改变数据,否则依然是原始数据)
在这里插入图片描述
在这里插入图片描述
修改成功!

七、结语

接下来将学习相关的JDBC API,博主也会在这个专栏中持续更新的

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

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

相关文章

java基础学习 day36(字符串相关类的底层原理)

字符串存储的内存原理 直接赋值会复用字符串常量池中已有的new出来的不会复用,而是开辟一个新的空间来创建 “”号比较的到底是什么 基本数据类型比较数据值引用数据类型比较地址值 PS. 所以以后对引用数据类型,不要用“”,改用.equals()…

RS485接线方式小科普

欢迎来到东用知识小课堂!RS-485采用平衡发送和差分接收方式实现通信:发送端将串行口的ttl电平信号转换成差分信号a,b两路输出,经过线缆传输之后在接收端将差分信号还原成ttl电平信号。RS-485总线网络拓扑一般采用终端匹配的总线型…

【Linux】基于 Pintos 实现新的用户级程序的系统调用 | 冯诺依曼架构

💭 写在前面:本章我们首先会明确冯诺依曼体系结构的概念,旨在帮助大家理解体系结构在硬件角度去理解数据流走向的问题。理解完之后我们再去谈操作系统,这个在之前的章节已经有所铺垫,当时我们只讲解了操作系统是什么&a…

车载以太网 - 车辆信息和车辆声明 - 09

到今天这一篇,对于ISO 13400 - 2的DoIP协议介绍就完事了,对DoIP协议的规范介绍基本已经全部包括了,无论是我们作为软件开发人员还是测试人员,了解这部分内容基本就能够满足这块基础的开发要求,大家如果在研究或者学习这块内容的时候有什么问题欢迎私聊;并且在本篇文章结束…

Nginx使用(四)动静分离实例

一、简介Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求和静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面,动静分离从目前实…

Linux系统安装Redis

我这里以CentOS7为例 VMware安装完centOS7之后 1.首先开启网络: 查看ip的命令不是传统的ifconfig或者ipconfig而是ip address 刚安装完使用ip address查看的时候会发现没有ip地址,这里需要修改设置启动网卡 vi /etc/sysconfig/network-scripts/ifcf…

英语学习打卡day1

2023.1.19 重点单词 1.speculation n.推测,投机 speculate v. speculative adj. spectate v.看 spectator inspect 检查(往里看) aspect 外观(看一眼) 2.literally adv.(强调事实可能令人惊讶)真正地,…

5.JAVA基础入门必备

文章目录前言一、数据类型二、标识符三、键盘录入四、IDEA中的第一个代码五、IDEA中的设置六、IDEA的项目和模块操作总结前言 一、数据类型 重点记忆byte的取值范围!! 不同类型数据的打印: public class VariableDemo3{//主入口public static void main(String[] args){//byt…

FrameBuffer 应用

1.Frame 是帧的意思, buffer 是缓冲的意思,所以 Framebuffer 就是帧缓冲。Framebuffer 就是一块内存,里面保存着一帧图像。帧缓冲(framebuffer)是 Linux 系统中的一种显示驱动接口,它将显示设备&#xff08…

技术写作指南。 坚持不下去,怎么办?(文末附视频)

“坚持不下去,怎么办?”这是很多人会遇到的问题,不仅仅是技术写作,任何需要耗费额外精气神的事情都无法长期坚持,例如运动健身、专业学习等。 这里分享一点自己的经验与看法,希望可以对大家的学习有所帮助…

Y9000P Ubuntu/Windows 双系统安装

一:配置介绍 Y9000P默认系统Win11,系统盘500G,从盘2T,内存32G,显卡3060 二:Windows系统分盘 系统盘(磁盘1)建议通过压缩卷分出300M作为Ubuntu的引导分区。 从盘(磁盘2…

23种设计模式(十一)——生成器模式【对象创建】

文章目录 意图什么时候使用生成器真实世界类比生成器模式的实现生成器模式的优缺点亦称:建造者模式、Builder 意图 生成器模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 换成大白话理解就是:一个复杂的对象,它的创建过程和使用过程要…

云网络VPC核心知识总结

云网络VPC核心知识总结

【OpenCV】 Octave | 角点检测 | SIFT/SURF算法

Ⅰ. 图像特征提取与描述 0x00 角点特征 图像的特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片,然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序,那计算机就也会玩拼图游戏了。 在拼图时&#xff0c…

没工作在家做什么赚钱?先从开展副业开始

新的一年即将开始,很多人对未来的工作,生活充满了期待。但是还有很多朋友处在失业状态当中,随着疫情的放开,人们的生活回归正常,于是便想着出去赚钱养家。对于没工作的朋友,我的建议是先从开展副业开始&…

Dubbo SPI实战

Dubbo SPI实战 1. SPI 概述 在具体分析之前还是先了解下 SPI 是什么? 首先它其实是 Service provider interface 的简写,翻译成中文就是服务提供发现接口。 不过这里不要被这个名词搞混了,这里的服务发现和我们常听到的微服务中的服务发现…

Spring笔记【JavaEE】

Spring 核⼼ Spring 是包含了众多⼯具⽅法的 IoC 容器。 什么是容器 我们之前 接触的容器有哪些? List/Map-> 数据存储容器Tomcat->Web容器 什么是Ioc IoC Inversion of Control 翻译成中⽂是“控制反转”的意思,也就是说 Spring 是⼀个“控…

第三方控价公司,怎么选才靠谱

第三方控价公司,可以帮我们解决渠道问题,分析管理经销队伍,为我们提供宝贵的商业情报。但是市场上第三方控价公司不止一家,随便一搜,就出来一串,业务与服务方面难免良莠不齐。如何从中挑选合格的服务商&…

【甄选靶场】Vulnhub百个项目渗透——项目五十三:Inclusiveness(更改ua,lfi->rce)

Vulnhub百个项目渗透 Vulnhub百个项目渗透——项目五十三:Inclusiveness(更改ua,lfi->rce) 🔥系列专栏:Vulnhub百个项目渗透 🎉欢迎关注🔎点赞👍收藏⭐️留言&#x…

springBoot工程入门

文章目录基本知识快速搭建springBoot工程起步依赖原理分析spring-boot-starter-parentspring-boot-starter-web配置yaml数据格式读取配置profileprofile配置方式多profile文件方式yml多文档方式profile激活方式内部配置加载顺序外部配置加载顺序整合其他框架Junitredismybatiss…