Java-JDBC操作MySQL

Java-JDBC操作MySQL

文章目录

  • Java-JDBC操作MySQL
    • 一、Java-JDBC-MySQL的关系
    • 二、创建连接
    • 三、登录MySQL
    • 四、操作数据库
      • 1、返回型操作
      • 2、无返回型操作
    • 练习题目及完整代码

一、Java-JDBC-MySQL的关系

调用
操作
返回
JAVA
JDBC库
MySQL

二、创建连接

首先在MySQL官网下载一个jar包,然后导入编译器中,然后导入。

通过官方文档,在MySQL8.0以后,连接的地址为com.mysql.cj.jdbc.Driver,地址需要添加代码serverTimezone=UTC

这里创建一个DBHelper工具类,将这两个参数设为常量便于使用。

class DBHelper {final static String className = "com.mysql.cj.jdbc.Driver";final static String mysqladdress = "jdbc:mysql://localhost:3306/java?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=TRUE";}

其中localhost为地址,3306为端口,java是数据库名称

三、登录MySQL

有了指定的地址,还需要用户和密码才能登录数据库。为了安全,此处不使用root用户,采用新开一个账户来进行对数据库的操作。

create user 'java'@'localhost' identified by '123456';
grant all on java to 'java'@'localhost';

同样定义常量存储用户名和密码。

private String user, psw;

通过构造函数来对user和psw变量赋值。

DBHelper(String user, String psw) {this.user = user;this.psw = psw;}

四、操作数据库

有了地址、用户、密码,就可以登录数据库进行操作,在此之前,需要先实例化Connection类和Statement类,并在try-catch语句中创建对数据库的连接和数据传递。

Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();}catch (Exception e) {e.printStackTrace();}

连接好数据库之后,就可以使用SQL语句对数据库进行操作。

1、返回型操作

定义一个SQL语句在String中,实例化一个ResultSet,并使用statement传输SQL命令。由于select语句是有返回值的,所以使用executeQuery类型进行返回。

String sql = "select * from teacher";
ResultSet resultSet = statement.executeQuery(sql);

由于select的返回可能不止一条数据,所以使用while循环,调用resultSet中的next()函数,用于判断是否还有数据返回。然后使用resultSet中的get函数,获取字段内容。

 while (resultSet.next()) {String tid = resultSet.getString("tid");String tname = resultSet.getString("tname");String sex = resultSet.getString("sex");int age = resultSet.getInt("age");String professional_title = resultSet.getString("professional_title");int basic_salary = resultSet.getInt("basic_salary");System.out.print("tid:" + tid + "\t");System.out.print("tname:" + tname + "\t");System.out.print("sex:" + sex + "\t");System.out.print("age:" + age + "\t");System.out.print("professional_title:" + professional_title + "\t");System.out.println("basic_salary:" + basic_salary);}

最后操作完毕,关闭对象释放内存即可。

resultSet.close();
statement.close();
connection.close();

返回型操作完整代码:

  Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "select * from teacher";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {String tid = resultSet.getString("tid");String tname = resultSet.getString("tname");String sex = resultSet.getString("sex");int age = resultSet.getInt("age");String professional_title = resultSet.getString("professional_title");int basic_salary = resultSet.getInt("basic_salary");System.out.print("tid:" + tid + "\t");System.out.print("tname:" + tname + "\t");System.out.print("sex:" + sex + "\t");System.out.print("age:" + age + "\t");System.out.print("professional_title:" + professional_title + "\t");System.out.println("basic_salary:" + basic_salary);}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();}

2、无返回型操作

与有返回操作一致,需要先对数据库建立通讯。

Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();} catch (Exception e) {e.printStackTrace();}

然后使用sql语句代码,这里以insert into语句为例。使用executeUpdate函数进行操作,由于没有返回值,直接使用statement进行操作后即可。

String sql = "insert into teacher(tid,tname,sex,age,professional_title,basic_salary) values('19G00001','靳小翠','女',38,'教授',16000)";
statement.executeUpdate(sql);

最后也是需要关闭对象。

无返回型操作完整代码:

        Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "insert into teacher(tid,tname,sex,age,professional_title,basic_salary) values('19G00001','靳小翠','女',38,'教授',16000)";statement.executeUpdate(sql);connection.close();statement.close();} catch (Exception e) {e.printStackTrace();}

练习题目及完整代码

题目:
题目
完整代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;class DBHelper {final static String className = "com.mysql.cj.jdbc.Driver";final static String mysqladdress = "jdbc:mysql://localhost:3306/java?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=TRUE";private String user, psw;DBHelper(String user, String psw) {this.user = user;this.psw = psw;}public void show_table() {Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "select * from book";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {String bid = resultSet.getString("bid");String bname = resultSet.getString("bname");String author = resultSet.getString("author");double price = resultSet.getDouble("price");String press = resultSet.getString("press");String type = resultSet.getString("type");System.out.print("bid:" + bid + "\t");System.out.print("bname:" + bname + "\t");System.out.print("author:" + author + "\t");System.out.print("price:" + price + "\t");System.out.print("press:" + press + "\t");System.out.println("type:" + type);}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();}}public void change_data() {Connection connection;Statement statement;Statement statement1;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement1 = connection.createStatement();statement = connection.createStatement();String sql = "select press from book";String sql_professior = "update book set price=price*1.1";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {String bookname = resultSet.getString("press");if (bookname.equals("清华大学出版社")) {statement1.executeUpdate(sql_professior);}}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();} finally {show_table();}}public void sort() {Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "select * from book order by price DESC";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {String bid = resultSet.getString("bid");String bname = resultSet.getString("bname");String author = resultSet.getString("author");double price = resultSet.getDouble("price");String press = resultSet.getString("press");String type = resultSet.getString("type");System.out.print("bid:" + bid + "\t");System.out.print("bname:" + bname + "\t");System.out.print("author:" + author + "\t");System.out.print("price:" + price + "\t");System.out.print("press:" + press + "\t");System.out.println("type:" + type);}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();}}public void del() {Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "delete from book where price<50 ";statement.executeUpdate(sql);connection.close();statement.close();} catch (Exception e) {e.printStackTrace();}show_table();}public void add() {Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "insert into book(bid,bname,author,price,press,type) values('b00006','数据结构','严蔚敏',48,'清华大学出版社','科学类')";statement.executeUpdate(sql);connection.close();statement.close();} catch (Exception e) {e.printStackTrace();}show_table();}public void statistics() {Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "select * from book where press<(select avg(press) from book);";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {String bid = resultSet.getString("bid");String bname = resultSet.getString("bname");String author = resultSet.getString("author");double price = resultSet.getDouble("price");String press = resultSet.getString("press");String type = resultSet.getString("type");System.out.print("bid:" + bid + "\t");System.out.print("bname:" + bname + "\t");System.out.print("author:" + author + "\t");System.out.print("price:" + price + "\t");System.out.print("press:" + press + "\t");System.out.println("type:" + type);}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();}}
}
public class sql {static final String name = "java";static final String psw = "123456";public static void main(String[] args) {DBHelper dbHelper = new DBHelper(name, psw);Scanner scanner = new Scanner(System.in);while (true) {System.out.println("1、打印数据\n2、增加工资\n3、排序\n4、删除数据\n5、添加数据\n6、筛选数据");int choose = scanner.nextInt();switch (choose) {case 1:dbHelper.show_table();break;case 2:dbHelper.change_data();break;case 3:dbHelper.sort();break;case 4:dbHelper.del();break;case 5:dbHelper.add();break;case 6:dbHelper.statistics();break;}}}
}

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

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

相关文章

邮政快递查询,邮政快递单号查询,按物流更新量筛选出需要的单号

批量查询邮政快递单号的物流信息&#xff0c;按物流更新量将需要的单号筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 邮政快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主界…

PHP短信接口防刷防轰炸多重解决方案三(可正式使用)

短信接口盗刷轰炸&#xff1a;指的是黑客利用非法手段获取短信接口的访问权限&#xff0c;然后使用该接口发送大量垃圾短信给目标用户 短信验证码轰炸解决方案一(验证码类解决)-CSDN博客 短信验证码轰炸解决方案二(防止海外ip、限制ip、限制手机号次数解决)-CSDN博客 PHP短信…

《opencv实用探索·八》图像模糊之均值滤波、高斯滤波的简单理解

1、前言 什么是噪声&#xff1f; 该像素与周围像素的差别非常大&#xff0c;导致从视觉上就能看出该像素无法与周围像素组成可识别的图像信息&#xff0c;降低了整个图像的质量。这种“格格不入”的像素就被称为图像的噪声。如果图像中的噪声都是随机的纯黑像素或者纯白像素&am…

Fiddler抓包模拟器(雷电模拟器)

Fiddler设置 List item 打开fiddler,的options 点击OK,重启fiddler 模拟器 更改网络设置 IP可以在电脑上终端上查看 然后在模拟器浏览器中输入IP:端口 安装证书

[二分查找双指针]LeetCode881: 救生艇

救生艇 作者推荐 [二分查找]LeetCode2040:两个有序数组的第 K 小乘积 本文涉及的基础知识点 二分查找算法合集 题目 给定数组 people 。people[i]表示第 i 个人的体重 &#xff0c;船的数量不限&#xff0c;每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人&am…

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-5Laplace Transform of Convolution卷积的拉普拉斯变换

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-数学基础Ch0-5Laplace Transform of Convolution卷积的拉普拉斯变换 Laplace Transform : X ( s ) L [ x ( t ) ] ∫ 0 ∞ x ( t ) e − s t d t X\left( s \right) \mathcal{L} \left[ x\lef…

QT作业2

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

【Flink系列三】数据流图和任务链计算方式

上文介绍了如何计算并行度和slot的数量&#xff0c;本文介绍Flink代码提交后&#xff0c;如何生成计算的DAG数据流图。 程序和数据流图 所有的Flink程序都是由三部分组成的&#xff1a;Source、Transformation和Sink。Source负责读取数据源&#xff0c;Transformation利用各种…

Linux各目录结构说明

文章目录 目录说明源码放哪里&#xff1f;拓展&#xff1a;Linux里面安装软件是装在home目录还是opt目录还是/usr/local好&#xff1f; bin boot dev etc home lib lib64 lostfound media mnt opt proc root run sbin srv sys tmp usr var 目录说明 bin 存放二进制可执行文件&…

《Spring Cloud Alibaba 从入门到实战》分布式配置

分布式配置 1、简介 Nacos 提供用于存储配置和其他元数据的 key/value 存储&#xff0c;为分布式系统中的外部化配置提供服务器端和客户端支持。 Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案&#xff0c;在特殊的 bootstrap 阶段&#xff0c;…

2023.12.4 关于 Spring Boot 统一异常处理

目录 引言 统一异常处理 异常全部监测 引言 将异常处理逻辑集中到一个地方&#xff0c;可以避免在每个控制器或业务逻辑中都编写相似的异常处理代码&#xff0c;这降低了代码的冗余&#xff0c;提高了代码的可维护性统一的异常处理使得调试和维护变得更加容易&#xff0c;通…

机器学习之无监督学习:九大聚类算法

今天&#xff0c;和大家分享一下机器学习之无监督学习中的常见的聚类方法。 今天&#xff0c;和大家分享一下机器学习之无监督学习中的常见的聚类方法。 在无监督学习中&#xff0c;我们的数据并不带有任何标签&#xff0c;因此在无监督学习中要做的就是将这一系列无标签的数…

Python实现PDF-Excel

轻松解决PDF格式转Excel&#xff08;使用python实现&#xff09; 实现思路&#xff1a; 要将PDF转换为Excel&#xff0c;可以使用以下步骤&#xff1a; 解析PDF内容&#xff1a;首先&#xff0c;需要使用Python中的第三方库&#xff08;如PyPDF2、pdfminer等&#xff09;来解…

Ribbon 饥饿加载

Ribbon默认是采用懒加载&#xff0c;即第一次访问时才会去创建LoadBalanceClient&#xff0c;请求时间会很长而饥饿加载则会在项目启动时创建&#xff0c;降低第一次访问的耗时&#xff0c;通过下面配置开启饥饿加载: 一、懒加载 Ribbon 默认为懒加载即在首次启动Application…

数据结构之插入排序

目录 前言 插入排序 直接插入排序 插入排序的时间复杂度 希尔排序 前言 在日常生活中&#xff0c;我们不经意间会遇到很多排序的场景&#xff0c;比如在某宝&#xff0c;某东上买东西&#xff0c;我们可以自己自定义价格是由高到低还是由低到高&#xff0c;再比如在王者某…

修改移远提供的GobiNet、quectel-CM源码,使其支持有方N720 4G模块

最近在研究imx6ull linux下4G模块驱动的移植&#xff0c;参考的移远ec20的移植方法&#xff0c;添加了GobiNet驱动&#xff0c;编译了quectel-CM工具&#xff0c;并且可以正常拨号&#xff0c;分配到ip&#xff0c;如下&#xff1a; ping外网也没有压力&#xff0c;如下…

Qt12.8

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

使用Pytorch实现Grad-CAM并绘制热力图

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 看一下这个main cnn.py的文件 那这里我为了方便 就直接从官方的torch vision这个库当中导入一些我们常用的model 比如说我这里的例子是采用的mobile net v3 large这个模型 然后这里我将pretrain设…

openEuler 20.03 (LTS-SP2) aarch64 cephadm 部署ceph18.2.0【1】离线部署 准备基础环境

准备3台虚拟机服务器(均可访问公网) 10.2.1.176 &#xff08;作为操作机&#xff09; 10.2.1.191 10.2.1.219 安装基础工具 yum install -y vim 配置hosts 编辑/etc/hosts&#xff0c;添加 10.2.1.176 ceph-176 10.2.1.191 ceph-191 10.2.1.219 ceph-219 配置免密登录…

JVM 执行引擎篇

机器码、指令、汇编语言 机器码 各种用二进制编码方式表示的指令&#xff0c;叫做机器指令码。开始&#xff0c;人们就用它采编写程序&#xff0c;这就是机器语言。机器语言虽然能够被计算机理解和接受&#xff0c;但和人们的语言差别太大&#xff0c;不易被人们理解和记忆&a…