zoukankan      html  css  js  c++  java
  • 数据库的连接-JDBC-数据的增、删、改、查

    一、JDBC概述

    1、定义

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

    2、 结构

    1605755469814

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

    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 ,获取结果集数据。

  • 相关阅读:
    关于阿里JSON的方法使用
    Xcode自带Git的使用
    IOS学习随笔
    python站点配置相关
    Kingfisher基本入门介绍
    Swift Package Manager使用
    swift中json编码解码
    Weapon项目笔记
    wxj的图片
    类似西瓜视频、抖音的自动播放库
  • 原文地址:https://www.cnblogs.com/z5452830/p/14053429.html
Copyright © 2011-2022 走看看