JDBC的使用和介绍

*JDBC

什么是JDBC?

JDBC(Java DataBase Connectivity)就是Java数据库连接.

JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet!

添加删除更新

public boolean addStudent(Student student){
        Connection con = null;
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.注册驱动,获取Connection对象
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?" +
                    "useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC",
                    "root","root");
            //3.获取SQL执行对象
            Statement stm = con.createStatement();
            String sql = "INSERT INTO `stu` VALUES('"+student.getSid()+"','"+student.getSname()+"',"+
                    student.getAge()+",'"+student.getGender()+"')";
            //4.执行SQL,获取返回结果
            int num = stm.executeUpdate(sql);
            //5.处理结果
            if(num > 0 ){
                return  true;
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //6.释放资源
            if(con != null){
                try {
                    con.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
        return false;
    }

查询

public List<Student> findAllStudent(){
        Connection con = null;
        ResultSet rs = null;
        List<Student> studentList = new ArrayList<>();
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.注册驱动,获取Connection对象
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?" +
                            "useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC",
                    "root","root");
            //3.获取SQL执行对象
            Statement stm = con.createStatement();
            String sql = "SELECT * FROM `stu`";
            //4.执行SQL,获取返回结果
            rs = stm.executeQuery(sql);
            //5.遍历结果集

            while(rs.next()){
                Student student = new Student();
                student = new Student();
                student.setSid(rs.getString("sid"));
                student.setSname(rs.getString("sname"));
                student.setAge(rs.getInt("age"));
                student.setGender(rs.getString("gender"));
                //添加到集合中
                studentList.add(student);
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //6.释放资源
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(con != null){
                try {
                    con.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
        return  studentList;
    }

DriverManager(驱动管理者)

1. 注册驱动:这可以让JDBC知道要使用的是哪个驱动;

2. 获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。

Connection(数据库连接对象)

1.Connection最为重要的一个方法就是用来获取Statement对象

Statement(SQL执行对象)

作用:

1.向数据库发送SQL

2.执行SQL,并且获取执行结果

核心方法:

1. void executeUpdate(String sql):执行更新操作(insert、update、delete等);

2. ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;

ResultSet(结果集对象)

将查询结果封装到Resultset结果集中。结果集是一个二维的表格,有行有列。

核心方法:

1. boolean next():使“行光标”移动到下一行,并返回移动后的行是否存在;

2. XXX getXXX(int col):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。

3. XXX getXXX(String colName):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。

怎么使用JDBC?

1.导入mysql-connector-java-5.1.47.jar到项目中。

2.加载mysql驱动

*PreparedStatement

-Statement

作用:

1.发送SQL语句

2.执行SQL语句

-PreparedStatement: 是Statement子类

-作用:

目的:解决SQL注入,防止SQL攻击

1.预编译SQL语句,后期再注入SQL参数

2.发送SQL语句

3.执行SQL语句

-CallableStatement:是Statement子类

-区别:支持存储过程的执行和调用

执行效率差别

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值