使用JDBC操作MySQL数据库

什么是JDBC?

概念:JDBC(Java DataBase Connectivity java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的。可以实现Java代码操作数据库。

本质:Java官方提供的接口(规范)。

创建数据库

//创建一个名为mydb的数据库
create database mydb;

 创建表格

//创建一个名为student的表格
create table student(
stuId int primary key auto_increment,
stuName varchar(20),
stuSex varchar(2),
stuAge int,
stuAddr varchar(50)
);

插入数据

#向名为student的表格添加数据(id字段添加了自增,不需要手动填入数据)
INSERT INTO student(stuName,stuSex,stuAge,stuAddr)VALUES
('张三','男',20,'河南'),
('李四','男',20,'四川'),
('翠花','女',18,'东北'),
('熊二','男',20,'狗熊岭');

检查数据库是否创建成功

 创建Java实体类,(类的名字和数据库对应,类的属性名与表的字段名对应)

    private int StuId;
    private String StuName;
    private String StuSex;
    private int StuAge;
    private String StuAddr;

 按住alt+inside建,第一个(Constructor)第一次全不选,第二次全选,第二个(Getter and Setter)和第三个全选

public class Student {
    private int StuId;
    private String StuName;
    private String StuSex;
    private int StuAge;
    private String StuAddr;

    public Student(int stuId) {
        StuId = stuId;
    }

    @Override
    public String toString() {
        return "Student{" +
                "StuId=" + StuId +
                ", StuName='" + StuName + '\'' +
                ", StuSex='" + StuSex + '\'' +
                ", StuAge=" + StuAge +
                ", StuAddr='" + StuAddr + '\'' +
                '}';
    }

    public Student() {
    }

    public Student(int stuId, String stuName, String stuSex, int stuAge, String stuAddr) {
        StuId = stuId;
        StuName = stuName;
        StuSex = stuSex;
        StuAge = stuAge;
        StuAddr = stuAddr;
    }

    public int getStuId() {
        return StuId;
    }

    public void setStuId(int stuId) {
        StuId = stuId;
    }

    public String getStuName() {
        return StuName;
    }

    public void setStuName(String stuName) {
        StuName = stuName;
    }

    public String getStuSex() {
        return StuSex;
    }

    public void setStuSex(String stuSex) {
        StuSex = stuSex;
    }

    public int getStuAge() {
        return StuAge;
    }

    public void setStuAge(int stuAge) {
        StuAge = stuAge;
    }

    public String getStuAddr() {
        return StuAddr;
    }

    public void setStuAddr(String stuAddr) {
        StuAddr = stuAddr;
    }
}

连接数据库

public class StudentTest {
//JDBC连接数据库,需要配置四大参数,同时需要导入数据库对应的驱动包
private String driver="com.mysql.cj.jdbc.Driver";
private String url="jdbc:mysql://127.0.0.1:3306/mydb?
useSSL=false&serverTimezone=UTC";
private String username="root";
private String password="123";

查询数据:

@Test
public void testSelectAll() throws Exception{
//JDBC操作数据库的步骤
//首先在项目根目录创建lib文件夹,放入jdbc驱动程序,然后Add As Library
//加载数据库驱动
Class.forName(driver);
//使用驱动管理器来获得连接---获得一个数据库连接对象Connection
Connection con=DriverManager.getConnection(url, username, password); //
生成方法调用返回值的快捷键:ctrl + alt + v
//使用Connection创建PreparedStatement预处理对象---PreparedStatement对象可以
执行带 ? 的sql语句
String sql="select * from student";
PreparedStatement pstm = con.prepareStatement(sql);
//使用PreparedStatement对象执行SQL语句,获得ResultSet结果集对象
ResultSet rs = pstm.executeQuery();
//操作判断--增删改返回的是影响的行数(返回值是int),只有查询获得结果集(返回值
ResultSet)
//让结果集的游标不断的往下移动,直到没有数据的时候结束循环
List<Student> studentList=new ArrayList<>(); //定义集合(大的容器),用来装
Student对象(小容器)
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");
2 JDBC的添加操作
//把以上数据封装到Student对象中
Student student=new Student(); //一行数据就封装成了一个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结果集对象 再pstm预处理对象 最后con连接对象
if(rs!=null){
rs.close();
}
if(pstm!=null){
pstm.close();
}
if(con!=null){
con.close();
}
}

添加数据:

@Test
    public void testStudentTianjia()throws Exception{
        //通过反射加载驱动包
        Class.forName(driver);
        //通过驱动管理器获得数据库的连接对象
        Connection con = DriverManager.getConnection(url, username, password);
        //通过连接对象,获取SQ预处理对象
        String sql = "insert into student(stuName,stuSex,stuAge,stuAddr)values(?,?,?,?)";
        PreparedStatement prs = con.prepareStatement(sql);
        //模拟从网页获取内容
        Student student = new Student();
        student.setStuName("老王");
        student.setStuSex("男");
        student.setStuAge(44);
        student.setStuAddr("隔壁");
        prs.setObject(1,student.getStuName());
        prs.setObject(2,student.getStuSex());
        prs.setObject(3,student.getStuAge());
        prs.setObject(4,student.getStuAddr());
        //判断操作是否生效
        int n = prs.executeUpdate();
        if (n>0){
            System.out.println("插入数据成功");
        }else{
            System.out.println("插入数据失败");
        }
        //释放资源
        if (con != null){
            con.close();
        }
        if (prs != null){
            prs.close();
        }
   }

删除数据:

@Test
    public void testStudentShanchu()throws Exception{
        //通过反射加载驱动包
        Class.forName(driver);
        //通过驱动管理器获得数据库的连接对象
        Connection con = DriverManager.getConnection(url,username,password);
        //通过连接对象,获取SQ预处理对象
        String sql = "delete from student where stuId = ?";
        PreparedStatement prs = con.prepareStatement(sql);
        //模拟从网页获取id
        int stuId = 2;
        prs.setObject(1,stuId);
        //判断操作是否成功
        int n = prs.executeUpdate();
        if (n>0){
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }
        //释放资源
        if (con != null){
            con.close();
        }
        if (prs != null){
            prs.close();
        }
   }

修改数据:下次再写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值