Com.Java.Basis 第十五课 JDBC 简称CRUP

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Com.Java.Basis 第十五课 JDBC 简称CRUP

Com.Java.Basis 第十五课 《Java的JDBC》简称CRUP:本篇博客文章讲的回很细。

1、什么是JDBC

JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统(DBMS)、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源


JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。


JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

2 什么是 CRUP:这样理解:在建立的表中 你需要删除一条记录 查询表的所有数据  修改表的字段  删除一条记录。

实操:

1 创建数据库 创建数据表  对数据进行 增删改查

/*
 Navicat Premium Data Transfer
 Source Server         : demossmtest
 Source Server Type    : MySQL
 Source Server Version : 80023
 Source Host           : localhost:3306
 Source Schema         : students
 Target Server Type    : MySQL
 Target Server Version : 80023
 File Encoding         : 65001
 Date: 05/07/2022 18:13:43
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `stuId` int NOT NULL,
  `stuName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `stuSex` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `stuAge` int NULL DEFAULT NULL,
  PRIMARY KEY (`stuId`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1003, '我想', '男', 35);
INSERT INTO `student` VALUES (1004, '年少清华', '男', 35);
INSERT INTO `student` VALUES (1005, '爱的主宰', '男', 520);
INSERT INTO `student` VALUES (1006, '我相信自己', '男', 520);
INSERT INTO `student` VALUES (1008, '李四', '男', 35);
SET FOREIGN_KEY_CHECKS = 1;

2 这里要运用到是Java中常用到的架包:用来连接数据库的:

 

3 建立包名创建工具类 先讲一下知识点 关于工具类的。

package Com.Jdbc.Util;//开发者建立的包名

import java.sql.Connection;
import java.sql.DriverManager;//导入连接数据库的架包

//加载驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");

//数据库的所在地址
String url = "jdbc:mysql://127.0.0.1:3306/students";

//3 数据库的用户名
String username = "root";

//4 数据库的密码
String password = "123456";

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

看下面的代码:将常用到的Java功能进行封装:

package Com.Jdbc.Util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBUtil {
    public static Connection getConnection() {
        Connection conn = null;
        try {
            //加载驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("加载驱动类成功");
            //建立数据库
            //数据库的所在地址
            String url = "jdbc:mysql://127.0.0.1:3306/students";
            System.out.println("mysql连接成功");
            //3 数据库的用户名
            String username = "root";
            //4 数据库的密码
            String password = "123456";
            conn = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("数据库连接成功,开始了");
        }
        return conn;
    }
    //last
    //封装方法
    public static void getClose(Connection conn) {
        try {
            if (conn != null) {
                conn.close();
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        System.err.println("数据库中的数据运行结束");
    }
}

4 完成第一个功能 查询表中的数据 利用java的方式:

// 第一步  建立链接
Connection conn =   DBUtil.getConnection();

// 第二步 创建statement对象
Statement stmt =conn.createStatement();

// 第三步 执行mysql语句
String sql="select *from student";
ResultSet rs =stmt.executeQuery(sql);

//第四步 遍历集合 循环遍历
while(rs.next()) {
   int stuId=rs.getInt("stuId");
   String stuName=rs.getString("stuName");
   String stuSex=rs.getString("stuSex");
   int stuAge=rs.getInt("stuAge");
   System.out.println(stuId+"---------"+stuName+"-----------"+stuSex+"---------"+stuAge);
}
package Com.Jdbc.Java;
import Com.Jdbc.Util.DBUtil;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
/**
 * 查询语句
 */
public class Test3 {
  public static void main(String[] args) throws Exception {
    // 第一步  建立链接
    Connection conn =   DBUtil.getConnection();
    // 第二步 创建statement对象
    Statement stmt =conn.createStatement();
    // 第三步 执行mysql语句
    String sql="select *from student";
    ResultSet rs =stmt.executeQuery(sql);
    //第四步 遍历集合 循环遍历
    while(rs.next()) {
      int stuId=rs.getInt("stuId");
      String stuName=rs.getString("stuName");
      String stuSex=rs.getString("stuSex");
      int stuAge=rs.getInt("stuAge");
      System.out.println(stuId+"---------"+stuName+"-----------"+stuSex+"---------"+stuAge);
    }
    //关闭数据库连接
    DBUtil.getClose(conn);
  }
}


5 完成第二个功能 在数据库的表中增加一条记录:

// 第一步 建立链接 Connection conn = DBUtil.getConnection();

// 第二步 创建statement对象 Statement stmt =conn.createStatement();

// 第三步 执行mysql语句
//增加语句
String sql=" INSERT INTO `students`.`student`(`stuId`, `stuName`, `stuSex`, `stuAge`)" +
      " VALUES (1006, 'I LOVE YOU ', '女', 520)";

//4  执行语句
int count=   stmt.executeUpdate(sql);
if(count>0) {
   System.out.println("学生插入成功");
}else {
   System.out.println("in the end");
}
package Com.Jdbc.Java;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import Com.Jdbc.Util.DBUtil;
public class Test1 {
  /**
   * 方案一:利用java删除数据库中的数据
   * @param args
   * @throws SQLException
   */
  public static void main(String[] args) throws SQLException {
    Connection conn=DBUtil.getConnection();
    System.out.println(conn);
    //获取 statement对象
    Statement stmt =conn.createStatement();
    //增加语句
    String sql=" INSERT INTO `students`.`student`(`stuId`, `stuName`, `stuSex`, `stuAge`)" +
        " VALUES (1006, 'I LOVE YOU ', '女', 520)";
    //4  执行语句
    int count=   stmt.executeUpdate(sql);
    if(count>0) {
      System.out.println("学生插入成功");
    }else {
      System.out.println("in the end");
    }
    DBUtil.getClose(conn);
  }
  }



6 完成第三个功能 修改字段 修改功能  将性别改为女人

// 第一步 建立链接 Connection conn = DBUtil.getConnection();

// 第二步 创建statement对象 Statement stmt =conn.createStatement();

String sql="update student set stuSex='男' ";
stmt.executeLargeUpdate(sql);

System.out.println("数据库中的数据修改成功");
DBUtil.getClose(conn);
package Com.Jdbc.Java;
import Com.Jdbc.Util.DBUtil;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 修改语句
 */
public class Test2 {
  /**
   * 修改数据利用就Java代码修改数据
   * @param args
   * @throws SQLException
   */
  public static void main(String[] args) throws SQLException {
    // 建立链接
    Connection conn =   DBUtil.getConnection();
    //
    Statement stmt =conn.createStatement();
    String sql="update student set stuSex='男' ";
    stmt.executeLargeUpdate(sql);
    System.out.println("数据库中的数据修改成功");
    DBUtil.getClose(conn);
  }
}

7 完成第四个功能删除功能:

// 第一步 建立链接 Connection conn = DBUtil.getConnection();

// 第二步 创建statement对象 Statement stmt =conn.createStatement();

String sql = "delete from `student` where stuId=1002"; //删除语句

//4  执行语句
int count = stmt.executeUpdate(sql);
if (count > 0) {
    System.out.println("学生删除成功");
}

package Com.Jdbc.Java;
import Com.Jdbc.Util.DBUtil;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 删除语句
 */
public class Test4 {
    public static void main(String[] args) throws SQLException {
        Connection conn = DBUtil.getConnection();
        System.out.println(conn);
        //获取 statement对象
        Statement stmt = conn.createStatement();
        //增加
        String sql = "delete from `student` where stuId=1002";
        ;
        //4  执行语句
        int count = stmt.executeUpdate(sql);
        if (count > 0) {
            System.out.println("学生删除成功");
        }
    }
}

8下面是升级版的:

package Com.Jdbc2;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test{
    public Connection con=null;
    /**
     * 定义方法,用于连接数据库
     */
    public void getConnection() {
        //1.加载插件
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //2.准备连接数据的信息:要连接的数据库的地址      用户名     密码
            String url="jdbc:mysql://localhost:3306/students?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimeZone=UTC";
            String username="root";
            String password="123456";
            //使用设备管理器类根据提供的信息连接数据库
            con=DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 增加一条的数据记录
     */
    @org.junit.Test
    public void test1() {
        //添加数据
        getConnection();
        //判断是否连接成功
        if (con!=null) {
            //准备要执行的添加sql语句
            //在jdbc连接数据库中,使用占位符?
            String sql="insert into tb_students(name,age) VALUES(?,?)";
            //准备执行sql语句
            try {
                PreparedStatement ps=con.prepareStatement(sql);
                ps.setString(1, "少年的你");
                ps.setInt(2, 22);
                int count=ps.executeUpdate();
                if (count>0) {
                    System.out.println("添加成功");
                }
                //执行完成之后,要断开数据库连接
                ps.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 修改一条数据内容
     */
    @org.junit.Test
    public void test2() {
        //修改语句
        getConnection();
        if (con!=null) {
            String sql="update tb_students set age=? where id=?";
            try {
                PreparedStatement ps=con.prepareStatement(sql);
                ps.setInt(1, 10023);
                ps.setInt(2, 122);
                int i=ps.executeUpdate();
                if (i>0) {
                    System.out.println("修改成功");
                }
                ps.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 删除一条数据内容
     */
@org.junit.Test
    public void test3() {
        //删除语句
        getConnection();
        if (con!=null) {
            String sql="delete from tb_students where id=?";
            try {
                PreparedStatement ps=con.prepareStatement(sql);
                ps.setInt(1, 1);
                int i=ps.executeUpdate();
                if (i>0) {
                    System.out.println("删除成功");
                }
                ps.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 查询的内容
     */
    @org.junit.Test
    public void test4() {
        //查询语句
        //根据id=1查询学生的信息
        getConnection();
        if (con!=null) {
            String sql="select * from tb_students where id=?";
            try {
                PreparedStatement ps=con.prepareStatement(sql);
                ps.setInt(1, 1);
                ResultSet rs=ps.executeQuery();
                //因为查询出来的数据是一张表的结构,游标默认停留在第一行,是字段名
                //所有需要获得的数据要从第二行开始
                if (rs.next()) {
                    int id=rs.getInt(1);
                    String name=rs.getString(2);
                    int age=rs.getInt(3);
                    System.out.println(id+"--"+name+"--"+age);
                }
                //断开连接
                rs.close();
                ps.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 修改的数据内容
     */
    @org.junit.Test
    public void test5() {
        List<Map<String, Object>> oList=new ArrayList<Map<String,Object>>();
        //查询多行数据
        getConnection();
        if (con!=null) {
            String sql="select * from tb_student";
            try {
                PreparedStatement ps=con.prepareStatement(sql);
                ResultSet rs=ps.executeQuery();
                while (rs.next()) {
                    int id=rs.getInt(1);//4
                    String name=rs.getString(2);//王六
                    int age=rs.getInt(3);//25
                    Map<String, Object> oMap=new HashMap<String, Object>();
                    oMap.put("id", id);
                    oMap.put("name", name);
                    oMap.put("age", age);
                    oList.add(oMap);
                }
                //断开连接 colse()
                rs.close();
                ps.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        //循环遍历集合,显示所有数据
        for (Map<String, Object> map : oList) {
            System.out.println(map);
        }
        //jdk1.8的新特性
        List<String> o=new ArrayList<String>();
        o.add("abc");
        o.add("123");
        o.add("456");
        o.add("789");
        //labdam表达式
        o.forEach(s->System.out.println(s));
    }
}

其实关于数据库的增删改查还有一些方案要用到的架包有如下:下面的内容属于java的框架开发。

 

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
Java 数据库连接 数据库
springboot java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver应该如何解决
通过上述步骤,可以有效解决Spring Boot项目中遇到的 `java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver`问题。确保在项目中正确添加达梦数据库的JDBC驱动依赖,并在配置文件中正确配置数据源信息,是解决此问题的关键。通过这些方法,可以确保Spring Boot项目能够正确连接达梦数据库并正常运行。
62 31
|
4月前
|
Java 关系型数据库 数据库连接
JDBC:Java与数据库的“黄金搭档”,为何它如此重要?
JDBC:Java与数据库的“黄金搭档”,为何它如此重要?
54 8
|
4月前
|
Java 数据库连接 API
JDBC:Java数据库连接的“黑科技”大揭秘
JDBC:Java数据库连接的“黑科技”大揭秘
43 7
|
4月前
|
SQL Java 数据库连接
为何JDBC是Java开发者的“心头好”?原因竟然这么简单!
为何JDBC是Java开发者的“心头好”?原因竟然这么简单!
50 3
|
2月前
|
SQL Java 数据库连接
如何在 Java 脚本中有效地使用 JDBC
如何在 Java 脚本中有效地使用 JDBC
19 0
|
4月前
|
SQL Java 关系型数据库
【前端学java】JDBC快速入门
【8月更文挑战第12天】JDBC快速入门
40 2
【前端学java】JDBC快速入门
|
4月前
|
Java 数据库连接 网络安全
JDBC数据库编程(java实训报告)
这篇文章是关于JDBC数据库编程的实训报告,涵盖了实验要求、实验环境、实验内容和总结。文中详细介绍了如何使用Java JDBC技术连接数据库,并进行增删改查等基本操作。实验内容包括建立数据库连接、查询、添加、删除和修改数据,每个部分都提供了相应的Java代码示例和操作测试结果截图。作者在总结中分享了在实验过程中遇到的问题和解决方案,以及对Java与数据库连接操作的掌握情况。
JDBC数据库编程(java实训报告)
|
4月前
|
SQL Java 数据库连接
JDBC之旅:从陌生到熟悉的Java数据库连接之路
JDBC之旅:从陌生到熟悉的Java数据库连接之路
37 9
|
4月前
|
SQL Java 关系型数据库
探索Java数据库连接的奥秘:JDBC技术全攻略
探索Java数据库连接的奥秘:JDBC技术全攻略
68 8
|
4月前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
Java开发者必知:JDBC连接数据库的“三大法宝”
45 7