数据库的连接-JDBC-数据的增、删、改、查

一、JDBC概述

1、定义

JDBC(Java DataBase Connectivity) Java 连接数据库技术。 Java语言访问各个数据库的一套接口集合。可以连接 MySql Oracle、DB2 等

2、 结构

数据库的连接-JDBC-数据的增、删、改、查

? 不同的数据库 需要提供不同的数据库连接驱动 , 该驱动由数据库厂商提供,在连接之前导入。

3、JDBC核心接口

JDBC连接程序中,sun提供核心接口 ,存在java.sql.* 和javax.sql.* 中

java.sql.* : 主要功能对数据库基本编程操作,完成数据库连接、执行sql语句,获取结果等

javax.sql.* : 对数据库的扩展操作 事务管理,行集合处理(RowSet)

核心接口:

  • java.sql.Connection : 表示数据库连接对象,获取数据库连接信息,用户名,数据库版本等,建立于数据库的连接会话。
  • java.sql.Driver : 表示驱动类,需要在连接之前 加载该驱动类,绑定连接数据库
  • java.sql.DriverManager : 这是一个类, 用于管理驱动的类,可从中获取连接对象。
  • java.sql.Statement : sql执行接口, 主要用于执行sql语句(insert ,delete等) ,excute(sql语句)
  • java.sql.PreparedStatement : 它属于Statement的子接口, 也用于执行sql语句,预编译的sql语句 ,可防止sql注入异常
  • java.sql.ResultSet : 表示一个结果集类,用于返回sql语句查询的结果。

4、Java连接数据库的步骤

? 1、导入数据库连接Jar包

? 对于Mysql分不同版本 导入的jar包不一样

? 以8.0为例 :

? 2、加载启动类

    3、获取连接对象Connection

 4、获取sql执行器 Statement

  5、执行sql语句 

  6、关闭连接
  // 1、导入jar包, 一个项目(模块)只需要导入一次   add to libs

        // 2、加载驱动类
        Class.forName("com.mysql.cj.jdbc.Driver"); // 通过反射执行该类
        // 3、通过驱动管理类获取连接对象    参数语法   ?参数名=参数值&参数名=参数值
        String url="jdbc:mysql://localhost:3306/j2008_db?useSSL=false&serverTimezone=UTC";
        String username="root";
        String password ="123456"; // 这是你自己设置的root密码
        Connection conn = DriverManager.getConnection(url,username,password);
        System.out.println("连接对象:"+conn);

        // **********************添加数据**************************
        //4、获取sql执行器 Statement
        String sql="insert into  dept values( 50,‘市场部‘,‘武汉‘)";
        Statement st =  conn.createStatement();
        // 5、执行SQL语句
        int count = st.executeUpdate(sql);
        if(count>0){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失败");
        }
        //6、关闭连接
        st.close();
        conn.close();

// 删除数据

 /**
     * 删除部门
     */
    public static void deleteDept(int deptno){

        try {
            //加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 获取数据库连接
            //jdbc:mysql://localhost:3306/j2008_db?useSSL=false&serverTimezone=UTC&user=root&password=123456
            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/j2008_db?useSSL=false&serverTimezone=UTC","root","123456");
            //获取sql执行器
            Statement st = conn.createStatement();
            //执行sql语句  executeUpdate
           int count = st.executeUpdate("delete from dept where deptno =" +deptno);
           //count 表示影响的行数
            if(count>0){
                System.out.println("删除成功");
            }else{
                System.out.println("删除失败");
            }
            //关闭连接
            st.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

//修改数据

 /**
     * 修改部门   execute : 执行任意sql语句 (包括DDL  DML)
     */
    public static void updateDept(int deptno ,String loc){
        Connection conn = null;
        Statement st = null;

        //获取数据库连接
        String url= "jdbc:mysql://127.0.0.1:3306/j2008_db?useSSL=false&serverTimezone=UTC";
        try {
            //加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
           conn  = DriverManager.getConnection(url,"root","123456");
           st = conn.createStatement();
           // 执行任意sql语句   返回boolean ,对于select语句返回true 非select返回false
           boolean flag = st.execute("update dept set loc = ‘"+loc+"‘ where  deptno = " + deptno);
            System.out.println("操作成功");

        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally{
            // 关闭连接
             if(st!=null){
                 try {
                     st.close();
                 } catch (SQLException e) {
                     e.printStackTrace();
                 }
             }
             if(conn!=null){
                 try {
                     conn.close();
                 } catch (SQLException e) {
                     e.printStackTrace();
                 }
             }
        }

    }

注意: executeUpdate 和 execute、executeQuery的区别

1、executeUpdate() 用于执行insert update ,delete 语句,返回sql影响的行数

? execute() : 用于执行任意sql语句,包括 创建表, 添加约束等 ,返回boolean类型, 对于select语句返回true ,对于其他语句返回 false

? executeQuery() : 用于执行查询sql语句, 它会返回一个 结果集对象 ResultSet ,获取结果集数据。

数据库的连接-JDBC-数据的增、删、改、查

上一篇:vue+webpack使用lib-flexible自动转换rem


下一篇:Flink基础(三十九):FLINK SQL(十五) 函数(四)自定义函数(二)