Jdbc连接数据库进行增,删,改,查操作

目录

1.创建数据库用来进行与Jdcb的连接

2.Jdbc部分


1.创建数据库用来进行与Jdcb的连接

创建一个

#建库
CREATE DATABASE sys;

#判读若有student的表则删除表
drop table if exists student

#建表
CREATE table student(
	stuId int PRIMARY KEY auto_increment,
	stuName VARCHAR(20),
	stuSex VARCHAR(2),
	stuAge int,
	stuAddr VARCHAR(50)
);

#插入数据
INSERT INTO  student(stuName,stuSex,stuAge,stuAddr) VALUES('张一','男',18,'北京');
INSERT INTO  student(stuName,stuSex,stuAge,stuAddr) VALUES('张二','男',21,'四川');
INSERT INTO  student(stuName,stuSex,stuAge,stuAddr) VALUES('王仨','男',14,'河南');

检查数据

2.Jdbc部分

先创建项目后新建目录加入mysql驱动Jar包

创建实体类

public class Student {

    public int stuId;
    public String stuName;
    public String stuSex;
    public int stuAge;
    public String stuAddr;


    public Student() {
    }

    public Student(int stuId, String stuName, String stuSex, int stuAge, String stuAddr) {
        this.stuId = stuId;
        this.stuName = stuName;
        this.stuSex = stuSex;
        this.stuAge = stuAge;
        this.stuAddr = stuAddr;
    }

    /**
     * 获取
     * @return stuId
     */
    public int getStuId() {
        return stuId;
    }

    /**
     * 设置
     * @param stuId
     */
    public void setStuId(int stuId) {
        this.stuId = stuId;
    }

    /**
     * 获取
     * @return stuName
     */
    public String getStuName() {
        return stuName;
    }

    /**
     * 设置
     * @param stuName
     */
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    /**
     * 获取
     * @return stuSex
     */
    public String getStuSex() {
        return stuSex;
    }

    /**
     * 设置
     * @param stuSex
     */
    public void setStuSex(String stuSex) {
        this.stuSex = stuSex;
    }

    /**
     * 获取
     * @return stuAge
     */
    public int getStuAge() {
        return stuAge;
    }

    /**
     * 设置
     * @param stuAge
     */
    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }

    /**
     * 获取
     * @return stuAddr
     */
    public String getStuAddr() {
        return stuAddr;
    }

    /**
     * 设置
     * @param stuAddr
     */
    public void setStuAddr(String stuAddr) {
        this.stuAddr = stuAddr;
    }

    public String toString() {
        return "jdbc{stuId = " + stuId + ", stuName = " + stuName + ", stuSex = " + stuSex + ", stuAge = " + stuAge + ", stuAddr = " + stuAddr + "}";
    }
}

了解并写入junit

import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class Main {
    /*
junit用法:1.方法要定义为无参无返回值的。且测试类的名字不能是Test
2.在方法上使用 @Test 这个注解
3.光标放在后面,然后使用 alt + 回车 进行自动导包,选择---Add 'JUnit4' to classpath
4.这个方法就不需要依赖main方法就可以直接执行
    */
    /*
      JDBC连接数据库,需要配置四大参数,同时需要导入数据库对应的驱动包
     */
    private String driver = "com.mysql.cj.jdbc.Driver";
    private String url = "jdbc:mysql://localhost:3306/sys?useSSL=false&serverTimezone=UTC";
    private String user = "root";
    private String password = "root";
}

进行增删改查操作

查询操作

    //  查询
    @Test
    public void testSelectAll() throws Exception {
//        加载数据库驱动
        Class.forName(driver);
//        使用驱动管理器来获得连接---获得一个数据库连接对象Connection
        Connection con = DriverManager.getConnection(url, user, password);
//        使用Connection创建PreparedStatement预处理对象---PreparedStatement对象可以执行带 ? 的sql语句
        String sql = "select * from student";
//        使用PreparedStatement对象执行SQL语句,获得ResultSet结果集对象
        PreparedStatement pstm = con.prepareStatement(sql);
        ResultSet rs = pstm.executeQuery();
//        操作判断--增删改返回的是影响的行数(返回值是int),只有查询获得结果集(返回值ResultSet)
//          让结果集的游标不断的往下移动,直到没有数据的时候结束循环
        List<Student> studentList = new ArrayList<>();//定义集合(大的容器),用来装Student对象(小容器)
//       使用while循环进行输出,直到表单数据全部输出
        while (rs.next()) {
            //根据字段名称获取表中的数据
            int stuId = rs.getInt("stuId");
            String stuName = rs.getString("stuName");
            String stuSex = rs.getString("stuSex");
            int stuAge = rs.getInt("stuAge");
            String stuAddr = rs.getString("stuAddr");
//          把以上数据封装到Student对象中
            Student student = new Student();

            student.setStuId(stuId);
            student.setStuName(stuName);
            student.setStuSex(stuSex);
            student.setStuAge(stuAge);
            student.setStuAddr(stuAddr);
//          把当前行封装后的Student对象装载到 List集合中
            studentList.add(student);
        }
        System.out.println(studentList);

//        回收资源
//        判断若rs不为空时关闭rs
        if (rs != null) {
            rs.close();
        }
 //        判断若pstm不为空时关闭pstm
        if (pstm != null) {
            pstm.close();
        }
 //        判断若con不为空时关闭con
        if (con != null) {
            con.close();
        }
    }

增加操作

  @Test
    public void inserTest() throws Exception {
        Class.forName(driver);

        Connection con = DriverManager.getConnection(url, user, password);

        String sql = "INSERT INTO  student(stuName,stuSex,stuAge,stuAddr) VALUES(?,?,?,?);";
        PreparedStatement pstm = con.prepareStatement(sql);
//        根据上面?的下标进行一一传参
        pstm.setString(1, "张三");
        pstm.setString(2, "男");
        pstm.setInt(3, 19);
        pstm.setString(4, "河南");
        int i = pstm.executeUpdate();
        if (i > 0) {
            System.out.println("成功了");
        } else {
            System.out.println("失败了");
        }
        if (pstm != null) {
            pstm.close();
        }
        if (con != null) {
            con.close();
        }
    }

删除操作

 //  删除
    @Test
    public void deleteTest() throws Exception {
        Class.forName(driver);
        Connection con = DriverManager.getConnection(url, user, password);

        String sql = "DELETE FROM student WHERE stuId=?";
        PreparedStatement pstm = con.prepareStatement(sql);
//      删除id为4的那一行
        pstm.setInt(1, 4);4
        int i= pstm.executeUpdate();
        if (i > 0) {
            System.out.println("成功了");
        } else {
            System.out.println("失败了");
        }
        if (pstm != null) {
            pstm.close();
        }
        if (con != null) {
            con.close();
        }

    }

修改操作

  //  修改
    @Test
    public void updateTest() throws Exception{

        Class.forName(driver);
        Connection con = DriverManager.getConnection(url, user, password);

        String sql ="UPDATE student SET stuName=? WHERE stuName=?";
        PreparedStatement pstm=con.prepareStatement(sql);
//      查找名为张三的人改为李四
        pstm.setString(1,"李四");
        pstm.setString(2,"张三");
        int i = pstm.executeUpdate();
        if(i>0){
            System.out.println("成功了");
        }else{
            System.out.println("失败了");
        }
        if (pstm != null) {
            pstm.close();
        }
        if (con != null) {
            con.close();
        }
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值