JDBC进行数据库的增删改查

1 什么是JDBC

概念:Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序

如何来访问数据库的 应用程序接口 ,提供了诸如查询和更新数据库中数据的方法。 JDBC 也是 Sun
Microsystems 的商标。我们通常说的 JDBC 是面向关系型数据库的。
各数据库厂商根据 JDBC 的规范,实现自身数据库操作的功能代码,然后以 jar 包(数据库厂商提供的驱动
包)的形式提供给开发人员使用,开发人员使用反射的机制创建这些具体实现类,按照 JDBC 的规范来完 成数据库的操作。
JDBC进行数据库的增删改查_第1张图片

MySQL数据库的创建

1.建立数据库

create database mydb;

2.建立所需要的表格并且插入准备好的数据

//设置数据视图
use mydb;
//判断表格是否存在存在即删除表格
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('张三','男',20,'河南');
INSERT INTO student(stuName,stuSex,stuAge,stuAddr)values('小美','女',19,'河南');
INSERT INTO student(stuName,stuSex,stuAge,stuAddr)values('小兰','女',18,'河南');
INSERT INTO student(stuName,stuSex,stuAge,stuAddr)values('小红','女',21,'河南');
//查询表格

SELECT * from student

检查数据是否完好

JDBC进行数据库的增删改查_第2张图片

 

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

性对应表的字段

JDBC进行数据库的增删改查_第3张图片

 java的创建实体类(类的首字母大写,IDEA自动构造代码快捷键: alt + insert

package com.hp.bean;
//实体类属性
public class Student {
    private int stuId;
    private String stuName;
    private String stuSex;
    private int stuAge;
    private String stuAddr;

    //类的无参有参构造方法
    public Student() {
        this.stuId = stuId;
        this.stuName = stuName;
        this.stuSex = stuSex;
        this.stuAge = stuAge;
        this.stuAddr = stuAddr;
    }

    //属性的getter和setter方法
    public int getStuId() {
        return stuId;
    }

    public void setStuId(int stuId) {
        this.stuId = stuId;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public String getStuSex() {
        return stuSex;
    }

    public void setStuSex(String stuSex) {
        this.stuSex = stuSex;
    }

    public int getStuAge() {
        return stuAge;
    }

    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }

    public String getStuddr() {
        return stuAddr;
    }

    public void setStuddr(String studdr) {
        this.stuAddr = studdr;
    }

    //打印
    @Override
    public String toString() {
        return "Student{" +
                "stuId=" + stuId +
                ", stuName='" + stuName + '\'' +
                ", stuSex='" + stuSex + '\'' +
                ", stuAge=" + stuAge +
                ", studdr='" + stuAddr + '\'' +
                '}';
    }
}
3. JDBC 的全查操作
查询获得的结果集
JDBC进行数据库的增删改查_第4张图片

 

结果集的游标默认指向的是数据标题行,需要使用 next() 方法移动游标,指向真正的数据行。该
方法的返回值是boolean类型,如果向下移动有数据行返回true,否则返回false

4.0写入JDBC操作类

junit的用法补充来帮助写JDBC

JDBC进行数据库的增删改查_第5张图片

 

package com.text;

import com.hp.bean.Student;
import org.junit.Test;

import java.sql.*;

import static java.lang.Class.forName;

public class studentTest {
// JDBC连接数据库,需要配置四大参数,同时需要导入数据库对应的驱动包
// junit用法:1.方法要定义为无参无返回值的。且测试类的名字不能是Test
2.在方法上使用 @Test 这个注解
3.光标放在后面,然后使用 alt + 回车 进行自动导包,选择---Add 'JUnit4' to
classpath
4.这个方法就不需要依赖main方法就可以直接执行
    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="root";
//密码的格式取决于自己定义,自己设定的密码

JDBC进行数据库的增删改查

(1)查询操作

//查询操作
    @Test
    public void testSelectAll() throws Exception {

//JDBC操作数据库的步骤
//1.首先在项目根目录创建lib文件夹,放入jdbc驱动程序,然后Add As Library
//2.加载数据库驱动
        forName(driver);

//3.使用驱动管理器来获得连接---获得一个数据库连接对象Connection
        Connection con = DriverManager.getConnection(url, username, password);//生成方法调用返回值的快捷键:ctrl + alt + v


//4.使用Connection创建PreparedStatement预处理对象---PreparedStatement对象可以
执行带 ? 的sql语句
       String sql="select * from student";
        PreparedStatement pstm = con.prepareStatement(sql);

//5.使用PreparedStatement对象执行SQL语句,获得ResultSet结果集对象
        ResultSet rs =  pstm.executeQuery();

//6.操作判断--增删改返回的是影响的行数(返回值是int),只有查询获得结果集(返回值
ResultSet)

//6.操作判断--增删改返回的是影响的行数(返回值是int),只有查询获得结果集(返回值
ResultSet)
//让结果集的游标不断的往下移动,直到没有数据的时候结束循环
List studentList=new ArrayList<>(); //定义集合(大的容器),用来装
Student对象(小容器)

while (rs.next()){
//使用循环根据字段名称获取表中的数据
    int stuId = rs.getInt("stuId");
    String stuName = rs.getString("stuName");
    String stuSex = rs.getString("stuSex");
    System.out.println(stuId+"---"+stuName+"---"+stuSex);
}
//释放资源
        if(rs!=null){
            rs.close();
        }
        if(pstm!=null){
            pstm.close();
        }
        if(con!=null){
            con.close();
        }
    }

查询结果如下

JDBC进行数据库的增删改查_第6张图片

 添加

//添加操作
    @Test
    public void test() throws Exception{
//1.导入包
//2.加载驱动
    forName(driver);
//3..通过驱动管理器获得数据库的连接对象
        Connection connection = DriverManager.getConnection(url, username, password);
//4.通过连接对象,获取SQ预处理对象
String sql="insert into student(stuName,stuSex,stuAge,stuAddr)values(?,?,?,?)";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
//     4.1   实际开发是前端页面传递过来的数据,此处我们直接模拟一组数据
        Student student = new Student();
        student.setStuName("李华");
        student.setStuSex("女");
        student.setStuAge(18);
        student.setStuddr("南阳");
//5.1传递参数
        preparedStatement.setObject(1,student.getStuName());
        preparedStatement.setObject(2,student.getStuSex());
        preparedStatement.setObject(3,student.getStuAge());
        preparedStatement.setObject(4,student.getStuddr());
//5.2执行更新(增删改都叫做数据库的更新,更新返回的是影响的行数)
        int n = preparedStatement.executeUpdate();
//6判断影响的行数 n > 0 表示插入成功,否则插入失败
        if(n>0){
            System.out.println("插入数据成功");
        }else{
            System.out.println("插入数据失败");
        }
        //7释放资源
        if(preparedStatement!=null){
            preparedStatement.close();
        }
        if(connection!=null){
            connection.close();
        }
    }

JDBC进行数据库的增删改查_第7张图片

删除

//删除操作
    @Test
public void testDel() throws Exception {
//        1.
//        2.通过反射加载驱动程序
        Class.forName(driver);
//3.通过驱动管理器获得数据库的连接对象
        Connection connection = DriverManager.getConnection(url,username,password);
//4.通过数据库连接对象获取sql预处理对象
String sql="delete from student where stuId=?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
//5.1预处理对象的sql语句有 ? ,所以需要传参
      int stuId=3;
      preparedStatement.setObject(1,stuId);
//5.2执行更新操作(增删改都是更新操作,返回的结果是影响的行数)
 int n=preparedStatement.executeUpdate();
// 6判断影响的行数 n>0 表示删除成功,否则删除失败
        if(n>0){
            System.out.println("删除成功");
        } else {
            System.out.println("删除失败");
        }
//7释放资源
        if(preparedStatement!=null){
            preparedStatement.close();
        }
        if(connection!=null){
            connection.close();
        }

    }

 JDBC进行数据库的增删改查_第8张图片

修改

//    修改操作
    @Test
public void textli() throws Exception {
//1
// 2.加载驱动
Class.forName(driver);
//3.获得数据
        Connection connection = DriverManager.getConnection(url, username, password);
//4连接对象那
       String sql="update student set stuSex=? where stuName=? ";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setObject(1,"女");
        preparedStatement.setObject(2,"蔡徐坤");
         int n= preparedStatement.executeUpdate();
        if(n>0){
            System.out.println("修改成功");
        }else {
            System.out.println("修改失败");
        }
        if (preparedStatement!=null){
            preparedStatement.close();
        }
        if (connection!=null){
            connection.close();
        }


    }
}



 

你可能感兴趣的:(数据库,java,开发语言)