当前位置: 首页 > news >正文

【Java入门到精通】(五)初识MySql数据库

一、MySql介绍

1.1 程序交互过程

1.2 MySql的介绍

         MySql数据库最初是由MySql AB公司开发,2008年1月16号被Sun公司收购。2009年,SUN又被Oracle收购。

        用于MySql数据库体积小,速度快,成本低,跨平台,开放源码等优点,现已被广泛应用于互联网上的中小型网站中,并且大型网站也开始使用MySql数据库,如网易、新浪等。

1.3 MySql下载

https://dev.mysql.com/downloads/installer/https://dev.mysql.com/downloads/installer/ 

1.4 MySql的安装

二、MySql的使用

2.1 SQL介绍

        SQL(Structured Query Language)是一种操作数据库的语言

        在数据库管理系统中,使用SQL语言来实现数据的存取、查询、更新等功能。

        SQL是一种非过程化语言,只需要提出“做什么”,而不需要指明“怎么做”。

2.2 表介绍

        表(Table)是数据库中数据存最常见和最简单的一种形式,数据库可以将复杂的数据结构用较为简单的二维表来标识。二维表是由行和列组成的,分别都包含着数据

书籍编号书籍名称书籍作者书籍定价
1Java基础(上)小张100
2Java基础(下)小张200

        每个表都是由若干行和列组成的,在数据库中表的行为被称为记录,表中的列被称为是这些记录的字段

2.3 使用可视化工具操作MySql

        这里由于不可抗因素我是用的是dBeaver可视化工具,可供参考

步骤一:创建数据库

步骤二:创建表

步骤三:增删改查sql语句的使用
-- 查询数据
select * from t_book;-- 新增数据
insert into t_book (id,name,author,price) values (1,'Java基础','小张',88);
insert into t_book (id,name,author,price) values (2,'《活着》','余华',100);-- 删除
delete from t_book where id = 2;-- 修改数据
update t_book set price=50 where id = 1;
update t_book set name='《Java基础》' where id = 1;-- 查看数据
select * from t_book tb;
select name,author from t_book tb;
select * from t_book tb where price > 60;

三、JDBC技术

3.1 JDBC的介绍

        JDBC(Java Database Connectivity - Java数据库连接),是SUN公司定义的一套接口(规范)。

3.2 使用JDBC访问数据库进行编码步骤

(1)加载DIrver驱动

        根据你的MySql数据的版本,去下载对应的JDBC的驱动jar包,可以从下面这个网站中寻找

https://downloads.mysql.com/archives/c-j/https://downloads.mysql.com/archives/c-j/

         下载完成后,将驱动包引入项目中,并“添加为库”

        在程序中加载驱动

(2)使用JDBC插入数据
package com.study.test01;import com.mysql.cj.jdbc.Driver;import java.sql.*;public class Test {public static void main(String[] args) throws ClassNotFoundException, SQLException {// 加载驱动:Class.forName("com.mysql.cj.jdbc.Driver");// 获取连接String url = "jdbc:mysql://127.0.0.1:3306/study?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";/*=====url中参数含义=====useSSL:是否使用SSL认证机制-不使用 falseuseUnicode:是否使用unicode字符集-使用characterEncoding=UTF-8:使用unicode的utf-8策略serverTimezone:时区参数-东八区allowPublicKeyRetrieval:允许客户端从服务器获取公钥*/String username = "root";String password = "root";Connection conn = DriverManager.getConnection(url, username, password);// 创建会话Statement stmt = conn.createStatement();// 发送SQL(更新操作)int i = stmt.executeUpdate("insert into t_book (id,name,author,price) values (3,'红高粱','莫言',49.5)");// 处理结果if (i > 0) {// 证明对数据库的数据条数有影响System.out.println("插入成功");} else {System.out.println("插入失败");}// 发送SQL(查询sql)// ResultSet是一个结果集合(数据集)
//        ResultSet resultSet = stmt.executeQuery("select * from t_book");
//        // 处理结果
//        while (resultSet.next()) { // 判断是否有记录存在
//            System.out.println(resultSet.getString("id") + "----" + resultSet.getString("name") + "----" + resultSet.getString("author") + "----" + resultSet.getDouble("price"));
//        }// 关闭资源stmt.close();conn.close();}
}

四、项目升级

        在实际开发过程中,我们系统中的结构化数据都是存放在数据库中的,所以这里我们将我们之前的【小张书城】升级到数据库的版本,来演示我们在实际开发过程中是如何跟数据库做交互的。

Book类

package com.study.test02;public class Book {private int id;private String name;private String author;private double price;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}

Test对象

package com.study.test02;import java.sql.*;
import java.util.ArrayList;
import java.util.Scanner;public class Test {public static void main(String[] args) throws SQLException, ClassNotFoundException {while(true){// 打印菜单System.out.println("-------欢迎来到【小张书城】-------");System.out.println("1.根据书籍编号查询数据信息");System.out.println("2.查询所有书籍信息");System.out.println("3.删除指定书籍编号对应的书籍");System.out.println("4.退出应用");// 借助Scanner类:Scanner sc = new Scanner(System.in);System.out.println("请录入你想要执行的功能序号");// 利用键盘录入序号int choice = sc.nextInt(); // 键盘录入数据之后,必须点击回车,程序才能接收这个数据// 根据choice录入的功能序号进行后续判断if(choice == 1){// 录入一个书籍编号// 给友好的提示System.out.println("请录入你想要查询的书籍编号");int bno = sc.nextInt();// 根据书籍编号查询对应的书籍try {Book b = findBookByBno(bno);// 根据b的结果,来判断书籍是否查到if(b == null){System.out.println("您想要查询的书籍不存在");} else {System.out.println("当前查询到一本书:"+b.getName());}} catch (ClassNotFoundException e) {System.out.println("数据库连接出错>>>>>>>>");}}if (choice == 2){// 查询所有书籍信息ArrayList books = findBooks();if(books.size() == 0){System.out.println("没有查询到书籍");} else {for (int i = 0; i < books.size(); i++) {Book b = (Book) books.get(i);System.out.println(b.getId() + "----" + b.getName() + "----" + b.getAuthor() + "----" + b.getPrice());}}}if (choice == 3){// 录入删除的书籍的编号System.out.println("请录入你想要删除的书籍编号");// 利用键盘录入序号int bno = sc.nextInt(); // 键盘录入数据之后,必须点击回车,程序才能接收这个数据// 根据choice录入的功能序号进行后续判断int n = delBookByBno(bno);if (n<=0) {System.out.println("删除失败");} else {System.out.println("删除成功");}}if (choice == 4){System.out.println("【小张书城】程序退出中...");break;}}}// 定义查询数据库的方法// 根据编号查询对应的书籍public static Book findBookByBno(int bno) throws ClassNotFoundException, SQLException {Book b = null;// 加载驱动Class.forName("com.mysql.cj.jdbc.Driver");// 获取连接String url = "jdbc:mysql://127.0.0.1:3306/study?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";String username = "root";String password = "root";Connection conn = DriverManager.getConnection(url, username, password);// 创建会话Statement stmt = conn.createStatement();// 发送SQLResultSet rs = stmt.executeQuery("select * from t_book where id = " + bno);// 处理结果if(rs.next()){ // 如果结果只有一条,想要获取的话,写if就可以// 接收返回的数据int id = rs.getInt("id");String name = rs.getString("name");String author = rs.getString("author");double price = rs.getDouble("price");b = new Book();// 将返回值封装成一个书籍Book对象进行返回b.setId(id);b.setName(name);b.setAuthor(author);b.setPrice(price);}// 关闭资源stmt.close();conn.close();return b;}// 查询所有书籍public static ArrayList findBooks() throws ClassNotFoundException, SQLException {// 定义一个集合ArrayList<Book> books = new ArrayList<Book>();Book b = null;// 加载驱动Class.forName("com.mysql.cj.jdbc.Driver");// 获取连接String url = "jdbc:mysql://127.0.0.1:3306/study?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";String username = "root";String password = "root";Connection conn = DriverManager.getConnection(url, username, password);// 创建会话Statement stmt = conn.createStatement();// 发送SQLResultSet rs = stmt.executeQuery("select * from t_book");// 处理结果while (rs.next()) {// 接收返回的数据int id = rs.getInt("id");String name = rs.getString("name");String author = rs.getString("author");double price = rs.getDouble("price");b = new Book();// 将返回值封装成一个书籍Book对象进行返回b.setId(id);b.setName(name);b.setAuthor(author);b.setPrice(price);// 将书籍放到集合中books.add(b);}// 关闭资源stmt.close();conn.close();return books;}// 根据编号删除对应的书籍public static int delBookByBno(int bno) throws ClassNotFoundException, SQLException {// 加载驱动Class.forName("com.mysql.cj.jdbc.Driver");// 获取连接String url = "jdbc:mysql://127.0.0.1:3306/study?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";String username = "root";String password = "root";Connection conn = DriverManager.getConnection(url, username, password);// 创建会话Statement stmt = conn.createStatement();// 发送SQLint n = stmt.executeUpdate("delete from t_book where id = " + bno);// 处理结果// 关闭资源stmt.close();conn.close();return n;}
}
http://www.lryc.cn/news/590462.html

相关文章:

  • Datawhale AI夏令营-基于带货视频评论的用户洞察挑战赛使用bert提升效果
  • MyBatis详解以及在IDEA中的开发
  • AJ Security:实用的 Java Web 安全库
  • 小白成长之路-Elasticsearch 7.0 配置
  • 创建linux端口映射连接小网
  • ASP.NET Core Hosting Bundle
  • spring容器的bean是单例还是多例的?线程安全吗?
  • 【PTA数据结构 | C语言版】构建后缀树
  • PHP 社区正在讨论变更许可证,预计 PHP 9.0 版本将完全生效
  • PyTorch深度学习框架入门案例实战
  • 代码随想录算法训练营第五十一天|图论part2
  • (新手友好)MySQL学习笔记(完):事务和锁
  • 第三章.Redis数据类型详解——string篇
  • 用 urllib 开启爬虫之门:从零掌握网页数据抓取
  • Vue3+Ts实现父子组件间传值的两种方式
  • 自动驾驶激光3D点云处理系统性阐述及Open3D库函数应用
  • 【Elsa Workflows】Elsa Workflows审批流全功能扩展
  • string类【C++】
  • 面试问题:
  • BASE64编码通俗介绍
  • Towards Low Light Enhancement with RAW Images 论文阅读
  • 北京-4年功能测试2年空窗-报培训班学测开-第五十二天
  • linux服务器stress-ng的使用
  • WAMP允许远程访问
  • 30 天自制 C++ 服务器--Day3
  • 用python实现自动化布尔盲注
  • RHCSA(软链接与硬链接)
  • 高性能架构模式——高性能缓存架构
  • sqli-labs靶场通关笔记:第23关 注释符过滤
  • 二、CV_AlexNet