JDBC学习内容

1.什么是JDBC?

Java DataBase Connectivity(Java语言连接数据库)

2.JDBC的本质是什么

是一套接口,接口都有调用者和实现者。面向接口调用、面向接口写实现类、这都属于面向接口编程。

为什么要面向接口编程?

解耦合:降低程序的耦合度,提高程序的扩展力。

多态机制就是典型的面向接抽象编程

建议:

Animal a = new Cat();
Animal a = new Dog();
// 喂养的方法
public void feed(Animal a){// 面向父类型编程
    
}

不建议:

Dog d= new Dog();
Cat c = new Cat();

3.为什么SUN制定一套JDBC接口?

因为每一个数据库的底层实现不一样,ORACLE数据库有自己的原理,Mysql也有自己的原理,MS SqlServer数据库也有自己的原理

每一个数据库产品都有自己独特的实现原理。

4.JDBC 开发前的准备工作

  • 先从官网下载对应的驱动jar包

  • 将其配置到环境变量classpath当中

    classpath = .;C:\Users\23716\IdeaProjects\My_System\lib\mysql-connector-java-8.0.27-bin.jar

    以上配置是针对文本编辑器的,如果使用IDEA 开发则不用配置以上内容

个人实践方法:

  • 先从对应品牌的数据库网站连接jar包

  • 然后在文件包中建一个lib文件夹,在将所下载的jar包放到该文件夹下面

  • 将lib添加到对应模块的环境变量中

5.JDBC 编程六步

  1. 注册驱动(作用:让java程序知道要连接哪个品牌的数据库)

  2. 获取连接(表示JVM的进程和数据库进程之间的通道打开了,属于是进程间的通信,重量级的,使用完之后一定要关闭)

  3. 获取数据库操作对象(专门执行sql语句的对象)

  4. 执行sql语句(DQL,DML......)

  5. 处理查询的结果集(只有当第四步执行的是select语句时,才有第五步处理查询结果集)

  6. 释放资源(使用完资源之后一定要关闭资源。Java和数据库属于是进程间的通信,开启之后一定要关闭)

6.用IDEA连接数据库并进行操作

增删改查如下:

import java.sql.*;

添加操作

                    //mysql驱动包名 注册驱动  cj时8之后才出现的版本
                    String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
                    //数据库连接地址 获得数据库连接地址
                    String URL = "jdbc:mysql://localhost:3306/my_student_system";
                    //用户名,更换成你自己的用户名,此处为root用户
                    String USER_NAME = "root";
                    //密码,更换成你自己设定的密码,此处为:admin
                    String PASSWORD = "123456";
                    Connection connection = null;
                    
                    // 开始进行数据库连接时线性进行数据库的注册,连接,获取操作对象,执行sql语句,获取数据集及关闭连接前用try catch围绕,避免载过程中出现连接不上等问题。
                    try {
                        //1.加载mysql的驱动类 注册驱动
                        Class.forName(DRIVER_NAME);
                        //2.获取数据库连接同时获取操作对象
                        /*
                        url:统一资源定位符(网络中某个资源的绝对路径)
                        URL包括哪几个部分?
                            协议
                            IP
                            PORT
                            资源名字
                            
                        https://182.61.200.7:80/index.html
                            协议  https://
                            IP  182.61.200.7:
                            PORT    80
                            资源名字    index.html
                            
                        通信协议:
                            通信协议时通信之前就提前定好的数据传输格式
                            数据包具体怎么传数据,格式提前就定好的
                            
                        */
                        connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
                        // 3.创建数据库操作对象(Statement专门执行sql语句的)
                        PreparedStatement prst = connection.prepareStatement(sql);
                        // 4.mysql查询语句 即MySQL执行语句
                        String sql = "insert into grades_information values (?,?,?,?,?,?,?)";
                        prst.setString(1, student.getID());
                        prst.setString(2, student.getName());
                        prst.setInt(3, student.getHigh_math());
                        prst.setInt(4, student.getEnglish());
                        prst.setInt(5, student.getAlgorithm());
                        prst.setInt(6, student.getO_s());
                        prst.setDouble(7, student.getAverage_grade());
                        JOptionPane.showMessageDialog(null, "添加成功!");
                        
                        // 5.处理数据集
                        
                        // 有改动数据库的操作都要添加 prst.executeUpdate() 该语句
                        prst.executeUpdate();
                        System.out.println( "执行成功");
                        // 6.释放资源 prst.close(); connection.close();
                        // 关闭操作对象
                        prst.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    } finally {
                        if (connection != null) {
                            try {
                                //  关闭连接
                                connection.close();
                                System.out.println("关闭连接!");
                            } catch (SQLException e) {
                                // 关闭失败则抛出异常
                                e.printStackTrace();
                            }
                        }
                    }


删除操作

//mysql驱动包名
                String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
                //数据库连接地址
                String URL = "jdbc:mysql://localhost:3306/my_student_system";
                //用户名,更换成你自己的用户名,此处为root用户
                String USER_NAME = "root";
                //密码,更换成你自己设定的密码,此处为:admin
                String PASSWORD = "123456";
                Connection connection = null;
​
                try {
                    //加载mysql的驱动类
                    Class.forName(DRIVER_NAME);
                    //获取数据库连接
                    connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
​
​
                    //mysql查询语句
​
​
​
                    Statement statement = connection.createStatement();
​
​
                    String sql2 = "delete  from grades_information where ID = "+"\""+ID.getText()+"\"";
​
                    int effect = statement.executeUpdate(sql2);
                    if (effect==0){
                        JOptionPane.showMessageDialog(null, "不存在该学生信息!");
                    }else {
                        JOptionPane.showMessageDialog(null, "已删除该学生信息!");
                    }
                    statement.close();
​
​
                    System.out.println("执行成功");
                } catch (Exception e) {
                    e.printStackTrace();
                }finally {
                    if (connection != null) {
                        try {
                            connection.close();
                            System.out.println("关闭连接!");
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }

查询操作

//mysql驱动包名
                String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
                //数据库连接地址
                String URL = "jdbc:mysql://localhost:3306/my_student_system";
                //用户名,更换成你自己的用户名,此处为root用户
                String USER_NAME = "root";
                //密码,更换成你自己设定的密码,此处为:admin
                String PASSWORD = "123456";
                Connection connection = null;
                try {
                    //加载mysql的驱动类
                    Class.forName(DRIVER_NAME);
                    //获取数据库连接
                    connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
​
​
                    //mysql查询语句
                    String id = ID.getText();
                    String sql = "select * from grades_information where ID = ";
                    String sql1 = sql.concat("\"").concat(id).concat("\"");
                    PreparedStatement prst = connection.prepareStatement(sql1);
                    ResultSet res = prst.executeQuery(sql1);
                    if(res.isBeforeFirst()) {
                        String text_message = new String();
                        while (res.next()) {
                            text_message += " 学号: "+res.getString(1)+" 姓名: "+res.getString(2)+" 高等数学: "+res.getString(3)+" 大学英语: "+res.getString(4)+" 算法设计与分析: "+res.getString(5)+" 操作系统: "+res.getString(6)
                                    +" 平均成绩: "+res.getString(7)+"\n";
                        }
                        JOptionPane.showMessageDialog(null, text_message);
​
                    }else{
                        JOptionPane.showMessageDialog(null, "不存在该学生信息!");
​
                    }
​
//                    prst.executeUpdate();
                    System.out.println("执行成功");
                    prst.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }finally {
                    if (connection != null) {
                        try {
                            connection.close();
                            System.out.println("关闭连接!");
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }

更改操作

//mysql驱动包名
                    String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
                    //数据库连接地址
                    String URL = "jdbc:mysql://localhost:3306/my_student_system";
                    //用户名,更换成你自己的用户名,此处为root用户
                    String USER_NAME = "root";
                    //密码,更换成你自己设定的密码,此处为:admin
                    String PASSWORD = "123456";
                    Connection connection = null;
                    try {
                        //加载mysql的驱动类
                        Class.forName(DRIVER_NAME);
                        //获取数据库连接
                        connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
​
​
                        //mysql查询语句
                        String id = ID.getText();
                        String sql = "select * from grades_information where ID = ";
                        String sql1 = sql.concat("\"").concat(id).concat("\"");
                        PreparedStatement prst = connection.prepareStatement(sql1);
                        ResultSet res = prst.executeQuery(sql1);
                        if (res.isBeforeFirst()) {
                            Student student = new Student(ID.getText(), name.getText(), Integer.parseInt(higher_math.getText()), Integer.parseInt(English.getText()), Integer.parseInt(algorithm.getText()), Integer.parseInt(o_s.getText()));
​
                            String sql2 = "UPDATE grades_information set name = '" + student.getName() + "', higher_math = " + student.getHigh_math() + ",English = " + student.getEnglish() + ",Algorithm = " + student.getAlgorithm() + ",o_s = " + student.getO_s() + ",average = " + student.getAverage_grade() + " where ID = " + "\"" + student.getID() + "\"";
​
                            PreparedStatement prst2 = connection.prepareStatement(sql2);
                            prst2.executeUpdate();
                            prst2.close();
                            JOptionPane.showMessageDialog(null, "修改成功!");
                        } else {
                            JOptionPane.showMessageDialog(null, "不存在该学生信息!");
​
                        }
​
//                    prst.executeUpdate();
                        System.out.println("执行成功");
                        prst.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    } finally {
                        if (connection != null) {
                            try {
                                connection.close();
                                System.out.println("关闭连接!");
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }
                        }
                    }

7.注册驱动的另一种方式(常用方法)

第一种方式:

这种方式比较常用,因为参数时一个字符串,字符串可以写到xxx.properties文件中。

String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
​
Class.forName(DRIVER_NAME);

第二种方式:

try {
            DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
        } catch (SQLException e) {
            e.printStackTrace();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值