认识JDBC以及数据库增删查操作

发布于:2022-10-29 ⋅ 阅读:(397) ⋅ 点赞:(0)

1.什么是JDBC

概念 Java 数据库连接,( Java Database Connectivity ,简称 JDBC )是 Java 语言 中用来规范客户端程序
如何来访问数据库的 应用程序接口 ,提供了诸如查询和更新数据库中数据的方法。 JDBC 也是 Sun
Microsystems 的商标。我们通常说的 JDBC 是面向关系型数据库的。
各数据库厂商根据 JDBC 的规范,实现自身数据库操作的功能代码,然后以 jar 包(数据库厂商提供的驱动包)的形式提供给开发人员使用,开发人员使用反射的机制创建这些具体实现类,按照JDBC 的规范来完成数据库的操作。

2.接口和JDBC规范的理解

3. 关于JDBC连接数据库的增删查的操作

junit的用法补充:junit可以使方法脱离main方法直接执行,方便进行程序测试 

3.1 创建一个数据库 

3.1.1创建一个student表 

CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(8) NOT NULL,
sex VARCHAR(16),
bir VARCHAR(32)
)

代码运行结果如下: 

 

 3.1.2向表中插入数据

INSERT INTO student(name,sex,bir)
VALUES('库洛米','女','10月31日'),
('玉桂狗','男','3月6日'),
('hello kitty','女','11月1日'),
('帕恰狗','男','2月29日');

代码运行结果如下: 

 

3 .2JDBC进行数据库的操作

3.2.1 先在IDEA中创建实体类:类的名字对应数据库表的名字、类的属

性对应表的字段

public class student {
    //类的属性
    private int id;
    private  String name;
    private  String sex;
    private  String bir;

    //自动构造代码快捷键:alt + insert

 3.3 JDBC的增删查操作

连接数据库需要配置四大参数,同时需要驱动jar包 

/**
     * 连接数据库需要配置四大参数,同时需要驱动jar包
     */
    private String driver="com.mysql.cj.jdbc.Driver";
    private String url="jdbc:mysql://127.0.0.1:3306/1028";
    private String user="root";
    private String password="";//自己数据库的密码

3.3.1JDBC的全查操作

 /**
     * 数据库的全查询操作
     */
    @Test
    public  void testSelectAll() throws Exception {
        //JDBC操作数据库的步骤
        //1.首先在项目根目录创建lib文件夹,放入jdbc驱动程序,然后Add As Library
        //2.加载数据库驱动,使用反射加载
        Class.forName(driver);
        //3.使用驱动管理来获得连接---获得一个数据库连接对象Connection
        Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/1028","root","root");//生成方法调用返回值的快捷键是:ctrl + alt + v
        //4.使用Connection创建PreparedStatement预处理对象---PreparedStatement对象可以对sql语句预处理
        String sql="select * from student";
        PreparedStatement pstm = con.prepareStatement(sql);
        //5.使用PreparedStatement对象执行sql语句,查询返回的是结果集,增删改返回的是影响的行数(int)
        ResultSet rs = pstm.executeQuery();
        //6.操作判断--增删改返回的是影响的行数(返回值是int),只有查询获得结果集(返回值ResultSet)

        //定义一个集合,用来存储每一行数据(封装在了student对象中)
        List<student> studentList=new ArrayList<student>();
        //ResultSet结果集的游标默认指向的是表的标题行,需要让游标向下移动指向数据行
        while (rs.next()){
            //根据字段名称获取字段值
            int id=rs.getInt("id");
            String name=rs.getString("name");
            String sex=rs.getString("sex");
            String bir=rs.getString("bir");

            System.out.println(id+"---"+name+"---"+sex+"---"+bir);
            //把以上数据装载到Student对象中
            student stu=new student();
            stu.setId(id);
            stu.setName(name);
            stu.setSex(sex);
            stu.setBir(bir);
            //把student对象存储到List集合中
            studentList.add(stu);
        }
        System.out.println(studentList);
        //7.回收资源
        if (rs!=null){
            rs.close();
        }
        if (pstm!=null){
            pstm.close();
        }
        if (con!=null){
            con.close();
        }
    }

 代码运行结果如下:

3.3.2JDBC的增加操作

/**
     * 添加操作
     */
    @Test
    public  void testAdd() throws Exception {
        //1.导入驱动程序包

        //2.使用反射加载驱动程序
        Class.forName(driver);
        //3.通过驱动管理获得数据库的连接对象
        Connection con = DriverManager.getConnection(url,user,password);
        //4.通过Connection对象获得SQL的预处理对象
        String sql="insert into student(name,sex,bir) values(?,?,?)";
        PreparedStatement pstm = con.prepareStatement(sql);
        //后期我们还会学习通过servlet技术获取前端页面提交的数据,此处我们模拟构造数据,数据封装在student对象中
        student stu=new student();
        stu.setName("美乐蒂");
        stu.setSex("男");
        stu.setBir("4月16日");
        //5.1.SQL语句有?所有需要进行传参操作
        pstm.setObject(1,stu.getName());
        pstm.setObject(2,stu.getSex());
        pstm.setObject(3,stu.getBir());
        //5.2.执行更新(增删改的操作对于数据库都叫更新操作)
       int n = pstm.executeUpdate();
        //6.判断受影响的行数,如果n>0表示添加成功,否则添加失败
        if(n>0){
            System.out.println("添加成功");
        }else {
            System.out.println("添加失败");
        }
        //7.资源的释放
        if (pstm!=null){
            pstm.close();
        }
        if (con!=null){
            con.close();
        }
    }

代码运行结果如下: 

 

3.3.3JDBC的删除操作

/**
     *删除操作
     */
    @Test
    public void testDel() throws Exception {
        //1.导入驱动程序包
        //2.使用反射加载程序驱动包
        Class.forName(driver);
        //3.通过驱动管理获得数据库的连接对象
        Connection con = DriverManager.getConnection(url,user,password);
        //4.通过Connection对象获得SQL的预处理对象
        String sql = "delete from student where id=?";
        PreparedStatement pstm = con.prepareStatement(sql);
        //5.1执行?的传参
        int id=2;//后期这个id是浏览器传递过来的
       pstm.setObject(1,id);
        //5.2执行数据的更新(增删改对于数据库都是更新操作)
        int n = pstm.executeUpdate();
        //6.判断处理执行结束
        if (n>0){
            System.out.println("删除成功");
        }else {
            System.out.println("删除失败");
        }
        //7.回收资源
        if (pstm!=null){
            pstm.close();
        }
        if (con!=null){
            con.close();
        }
    }

代码运行结果如下: 

本文含有隐藏内容,请 开通VIP 后查看