JDBC的了解和运用 - 8.31

这篇博客主要介绍了JDBC的理解和使用,包括JDBC作为接口规范数据库连接,以及数据库驱动的角色。详细阐述了JDBC连接数据库的六个步骤,从安装驱动到关闭连接,并提及了如何将查询结果存入list集合中,特别提到了通过创建学生类来组织查询数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC的理解

在java里面,JDBC就是一个接口,给不同的数据库一个规范作为一个桥梁来连接java和数据库,而MySql或者Oracle等等这些数据库就是jdbc的不同实现类,数据库里的jar包一般称为驱动;所以现在就很明朗了,java提供一个jdbc的接口来规范,而各种数据库提供自己的驱动来实现与java的连接,这就是JDBC的作用

JDBC连接数据库的步骤

前面当然是要先把对应的jar包下载下来,之后再项目里面创建一个lib文件夹,把jar包放进去,再把jar包build Path一下,出现小奶瓶,再开始下面的步骤

第一步:安装驱动
第二步:创建连接
第三步:创建SQL语句
第四步:执行语句
第五步:获得执行结果
第六步:关闭查询,再关闭连接

具体的增删改查

public class Demo1 {

    public static String DB_DRIVER = "com.mysql.jdbc.Driver";
    public static String URL = "jdbc:mysql://localhost:3306/dodoke";
    public static String USER_NAME = "root";
    public static String PASSWORD = "123456";

    public static void main(String[] args) throws Exception{
//      insert();
//      update();
//      delete();
        select();
    }

    public static void insert() throws Exception{
        // 装载驱动
        Class.forName(DB_DRIVER); // 通过类全名加载驱动
        // 建立连接
        Connection conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);

        for (int i = 0; i < 100; i++) {

            // 创建查询
            PreparedStatement pst = conn.prepareStatement("INSERT INTO student(name) VALUES('Jack" + i + "')");
            // 执行查询
            int rs = pst.executeUpdate();
            // 返回结果
            System.out.println(rs);
            // 关闭通道:从里到外的关闭,先关闭查询,再关闭连接
            pst.close();

        }
        conn.close();
    }

    public static void update()  throws Exception{
        // 装载驱动
        Class.forName("com.mysql.jdbc.Driver"); // 通过类全名加载驱动
        // 建立连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dodoke", "root", "123456");

        // 创建查询
        PreparedStatement pst = conn.prepareStatement("UPDATE student SET name=? WHERE ID<?");
        pst.setString(1, "Mary");
        pst.setInt(2, 4); // 设置sql语句中有?的值 ?代表的是参数
        // 执行查询
        int rs = pst.executeUpdate();
        // 返回结果
        System.out.println(rs);
        // 关闭通道:从里到外的关闭,先关闭查询,再关闭连接
        pst.close();

        conn.close();
    }

    public static void delete() throws Exception {
        // 装载驱动
        Class.forName("com.mysql.jdbc.Driver"); // 通过类全名加载驱动
        // 建立连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dodoke", "root", "123456");

        // 创建查询
        PreparedStatement pst = conn.prepareStatement("DELETE FROM student WHERE ID<?");
        pst.setInt(1, 4); // 设置sql语句中有?的值 ?代表的是参数
        // 执行查询
        int rs = pst.executeUpdate();
        // 返回结果
        System.out.println(rs);
        // 关闭通道:从里到外的关闭,先关闭查询,再关闭连接
        pst.close();

        conn.close();
    }

    public static void select() throws Exception {
        // 装载驱动
        Class.forName("com.mysql.jdbc.Driver"); // 通过类全名加载驱动
        // 建立连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dodoke", "root", "123456");

        // 创建查询
        PreparedStatement pst = conn.prepareStatement("SELECT id as idd,name as nm FROM student");
        // 执行查询
        ResultSet rs = pst.executeQuery();
        // 返回结果
        // 遍历rs里面的内容
        while (rs.next()) {
            int id = rs.getInt("idd");
            String name = rs.getString("nm");
            System.out.println(id + ":" + name);
        }
        rs.close();
        // 关闭通道:从里到外的关闭,先关闭查询,再关闭连接
        pst.close();

        conn.close();
    }
}

把查询的数据放到list集合里面

先写一个学生类
package com.dodoke.jdbc;

public class Student {
    private Integer id;
    private String name;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Student(Integer id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public Student() {
        super();
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + "]";
    }
再把查询数据放入学生类型的集合
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.List;

public class Demo2 {
    public static void main(String[] args) {
        List<Student> stus = query("SELECT id as idd,name as nm FROM student");
        for (Student stu : stus) {
            System.out.println(stu);
        }
    }

    public static List<Student> query(String sql) {
        List<Student> stus = new ArrayList<Student>();
        try {
            // 装载驱动
            Class.forName("com.mysql.jdbc.Driver"); // 通过类全名加载驱动
            // 建立连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dodoke", "root", "123456");

            // 创建查询
            PreparedStatement pst = conn.prepareStatement(sql);
            // 执行查询
            ResultSet rs = pst.executeQuery();
            // 返回结果
            // 遍历rs里面的内容
            while (rs.next()) {
                int id = rs.getInt("idd");
                String name = rs.getString("nm");
                stus.add(new Student(id, name));
            }
            rs.close();
            // 关闭通道:从里到外的关闭,先关闭查询,再关闭连接
            pst.close();
            conn.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return stus;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值