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.mzph.cn/news/210756.shtml

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

相关文章

国产Type-C PD芯片—接口快充取电芯片

常用USB PDTYPE-C受电端&#xff0c;即设备端协议IC芯片&#xff08;PD Sink&#xff0c;也叫PD诱骗芯片&#xff09;&#xff0c;诱导取电芯片。 产品介绍 LDR6328: ◇ 采用 SOP-8 封装 ◇ 兼容 USB PD 3.0 规范&#xff0c;支持 USB PD 2.0 ◇ 兼容 QC 3.0 规范&#x…

TailwindCSS 支持文本文字超长溢出截断、文字文本省略号

前言 文本文字超长截断并自动补充省略号&#xff0c;这是前端日常开发工作中常用的样式设置能力&#xff0c;文字超长截断主要分为单行超长截断和多行超长截断。本文通过介绍基本CSS样式、tailwindcss 类设置两种基础方式来实现文字超长截断。 TailwindCSS 设置 单行文字超长…

WPF仿网易云搭建笔记(2):组件化开发

文章目录 前言专栏和Gitee仓库依赖属性实战&#xff1a;缩小&#xff0c;全屏&#xff0c;关闭按钮依赖属性操作封装主窗口传递this本身给TitleView标题控件主要代码MainWindow.xmalMainWindow.cs依赖属性方法封装TitleView.csTitleViewModelTitleViewModel实现效果 前言 这次…

【刷题】位运算

2 n 2^n 2n 1<<n判断某一位是否为1 s&1<<k将上面两个组合&#xff0c;可以得到判断一个集合中哪些内容包含&#xff0c;遍历所有情况。 100140. 关闭分部的可行集合数目 一个公司在全国有 n 个分部&#xff0c;它们之间有的有道路连接。一开始&#xff0c;…

CentOS 7 离线安装达梦数据库8.0

前期准备工作 确认操作系统的版本和数据库的版本是否一致 ## 查看系统版本&#xff1a;cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)关闭防火墙和Selinux # 查看selinux是不是disabled / enforce cat /etc/selinux/config## 查看防火墙状态 firewall-cmd …

数据结构之归并排序及排序总结

目录 归并排序 归并排序的时间复杂度 排序的稳定性 排序总结 归并排序 归并排序大家只需要掌握其递归方法即可&#xff0c;非递归方法由于在某些特殊场景下边界难控制&#xff0c;我们一般很少使用非递归实现归并排序。那么归并排序的递归方法我们究竟是怎样实现呢&#xff…

PHP医院手术麻醉系统源码,laravel、vue2 、mysql技术开发,自主知识产权,二开快捷

医院手术麻醉系统全套源码&#xff0c;有演示&#xff0c;自主知识产权 技术架构&#xff1a;PHP、 js 、mysql、laravel、vue2 手术麻醉临床信息管理系统是数字化手段应用于手术过程中的重要组成部分&#xff0c;用数字形式获取并存储手术相关信息&#xff0c;既便捷又高效。…

每日一练2023.12.10—— 倒数第N个字符串【PTA】

题目链接&#xff1a;L1-050 倒数第N个字符串 题目要求&#xff1a; 给定一个完全由小写英文字母组成的字符串等差递增序列&#xff0c;该序列中的每个字符串的长度固定为 L&#xff0c;从 L 个 a 开始&#xff0c;以 1 为步长递增。例如当 L 为 3 时&#xff0c;序列为 { a…

Qt Creator设置IDE的字体、颜色、主题样式

Qt是一款开源的、跨平台的C开发框架&#xff0c;支持Windows、Linux、Mac系统&#xff0c;从1995发布第一版以来&#xff0c;发展迅猛&#xff0c;最开始是用于Nokia手机的Symbian(塞班)系统和应用程序开发&#xff0c;现在是用于嵌入式软件、桌面软件(比如WPS、VirtualBox)、A…

【图论笔记】克鲁斯卡尔算法(Kruskal)求最小生成树

【图论笔记】克鲁斯卡尔算法&#xff08;Kruskal&#xff09;求最小生成树 适用于 克鲁斯卡尔适合用来求边比较稀疏的图的最小生成树 简记&#xff1a; 将边按照升序排序&#xff0c;选取n-1条边&#xff0c;连通n个顶点。 添加一条边的时候&#xff0c;如何判断能不能添加…

Python实现PDF-Excel

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

西南科技大学C++程序设计实验十二(文件流操作)

一、实验目的 1. 熟悉文件的基本操作; 2. 在类中添加打开文件、保存文件、读取文件等处理函数; 二、实验任务 1. 分析完善程序:主函数创建一个文件对象,每次打开文件,在其尾部添加数据。如果文件不存在,则新建该文件。请将空白处需要完善的功能补充完整。 #include …

HTML中表格的语法及使用(详解)

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍HTML中表格的语法及详细使用以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题可以在评论区留…

Java集合框架定义以及整体结构

目录 一、Java集合框架1.1 什么是java集合框架1.2 集合与数组 二、集合框架具体内容2.1 整体框架2.2 遗留类和遗留接口1.3 集合框架设计特点 参考资料 一、Java集合框架 1.1 什么是java集合框架 Java集合框架&#xff08;Java Collections Framework&#xff09;是Java平台提…

[Linux] yum安装分布式LNMP架构

1. 在一台主机安装nginx&#xff08;192.168.136.120&#xff09; 1.1 搭建nginx相关的yum源 cd /yum.repos.d mkdir bak mv *.repo bak vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/7/$basearch/ gpgche…

基于Python+Django+mysql图书管理系统

基于PythonDjangomysql图书管理系统 一、系统介绍二、功能展示三、其它系统四、获取源码 一、系统介绍 程序开发软件&#xff1a;Pycharm 数据库&#xff1a;mysql 采用技术&#xff1a; Django(一个MVT框架&#xff0c;类似Java的SSM框架) 人生苦短&#xff0c;我用Python&a…

【rabbitMQ】rabbitMQ的下载,安装与配置

目录 1. 下载Erland 安装步骤&#xff1a; 配置环境变量&#xff1a; 校验环境变量配置是否成功 2.下载MQ 安装步骤&#xff1a; 添加可视化插件 &#xff1a; 启动&#xff1a; 拒绝访问 1. 下载Erland 因为rabbitMQ是基于Erland,所以在安装rabbitMQ之前需要安装Erla…

【基于NLP的微博情感分析:从数据爬取到情感洞察】

基于NLP的微博情感分析&#xff1a;从数据爬取到情感洞察 背景数据集技术选型功能实现创新点 今天我将分享一个基于NLP的微博情感分析项目&#xff0c;通过Python技术、NLP模型和Flask框架&#xff0c;对微博数据进行清洗、分词、可视化&#xff0c;并利用NLP和贝叶斯进行情感分…

VoxPoser:使用语言模型进行机器人操作的可组合 3D 值图

语言是一种压缩媒介&#xff0c;人们通过它来提炼和传达他们对世界的知识和经验。大型语言模型&#xff08;LLMs&#xff09;已成为一种有前景的方法&#xff0c;通过将世界投影到语言空间中来捕捉这种抽象。虽然这些模型被认为在文本形式中内化了可概括的知识&#xff0c;但如…

Vulnhub-DC-6 靶机复现完整过程

一、搭建环境 kali充当攻击机 ip地址是&#xff1a;192.168.200.14 DC-6充当靶机 &#xff1a; IP地址暂时未知 注意&#xff1a;让两台机器的使用同一种网络适配器 二、信息收集 1.探索同网段存活的主机、 ①第一种方法 arp-scan -l②第二种方法 netdiscover -i eth0 -…