在环境中使用jdbc 连接数据库 对数据进行增删改操作

- 向数据库添加数据

 //加载数据库驱动
    private static final String driverClass = "com.mysql.cj.jdbc.Driver";
    //连接远程数据库地址
    private static final String url = "jdbc:mysql://127.0.0.1:3306/stu_dba?srverTimezone=Asia/Shanghai";
    //数据库用户名
    private static final String user = "root";
    //数据库密码
    private static final String password = "0415";
    //静态代码块 随着类的加载而加载 只加载一次
    static {
        try {
            //加载JDBC驱动程序
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("加载MySQL驱动类失败~~~");
        }
    }

    //获取数据库连接对象
    public Connection getConnection(){
        Connection con = null;
        try {
            /*
                DriverManager(驱动管理类):
                管理不同关系型数据库(比如:Oracle,MySQL,SQL,Server等)驱动程序大管家
             */
             con =  DriverManager.getConnection(url,user,password);
             return con;
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("操作数据库出错~~~");
            return null;
        }
    }

    //释放所有资源
    public void closeAll(ResultSet rs, PreparedStatement stmt, Connection con){
        if (null != rs){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (null != stmt){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (null != con){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /*
        访问权限
     */
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入姓名:");
        String name = scanner.next();

        System.out.println("请输入性别(0:保密 1:男 2:女):");
        int gender = scanner.nextInt();

        System.out.println("请输入出生日期:");
        String birthDate = scanner.next();

        System.out.println("请输入手机号:");
        String phone = scanner.next();

        System.out.println("请输入邮箱:");
        String email = scanner.next();

        System.out.println("请输入地址:");
        String address = scanner.next();

        System.out.println("请输入密码:");
        String password = scanner.next();

        System.out.println("请输入身份证号码:");
        String idNumber = scanner.next();

        System.out.println("请输入班级:1:java 2:html 3:css 4:springbolod 5:javascorpt");
        int classId = scanner.nextInt();


        jdbc_02 _db = new jdbc_02();
        //获取数据库连接对象
        Connection conn = _db.getConnection();
        System.out.println(conn.isClosed() == false ? "连接成功~" : "连接失败~");
        String sql = "insert into student(name,gender,birth_date,phone,email,address,password,id_number,class_id)values(?,?,?,?,?,?,?,?,?)";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setString(1,name);
        ps.setInt(2, gender);
        ps.setString(3,birthDate);
        ps.setString(4,phone);
        ps.setString(5,email);
        ps.setString(6,address);
        ps.setString(7,password);
        ps.setString(8,idNumber);
        ps.setInt(9, classId);
        //executeUpdate() 执行DML语句,返回受DML语句影响的行数,如果非0
        int rows = ps.executeUpdate();
        if (rows>0){
            System.out.println("添加学生成功~");
        }
        _db.closeAll(null,ps,conn);
    }

- 向数据库删除数据

  // 驱动程序类
    private static final String driverClass  = "com.mysql.cj.jdbc.Driver";
    //数据库连接地址
    //private static final String url = "jdbc:mysql:///stu_db?serverTimezone=Asia/Shanghai";
    private static final String url = "jdbc:mysql://127.0.0.1:3306/stu_db?serverTimezone=Asia/Shanghai";
    //数据库用户名
    private static final String user = "root";
    //密码
    private static final String password = "root";

    // 静态代码块  :随着类的加载而加载,仅执行一次
    static {
        try {
            //加载驱动程序类(mysql)
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("加载MySQL驱动类失败");
        }
    }//Excel表格?

    //获得数据库连接对象
    public Connection getConnection() {
        try {
            /*
            DriverManager(驱动管理类):
            管理不同关系型数据库(比如:Oracle、MySQL、SQL Server等)驱动程序大管家。
             */
            Connection conn =
                    DriverManager.getConnection(url,user,password);
            return conn;
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("操作数据库出错");
            return null;
        }
    }
    //释放所有资源
    public void closeAll(ResultSet rs, Statement stmt,Connection conn){
        if(null != rs) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(null != stmt) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(null != conn) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) throws SQLException {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入学号:");//通过主键(学号)或唯一键来作为删除条件
        Integer id = input.nextInt();

        Jdbc_04 _db = new Jdbc_04();
        //获取数据库连接对象
        Connection conn = _db.getConnection();
        System.out.println(conn.isClosed() == false ? "连接成功!" : "连接失败");
        String sql = "delete from student where id=?";
        PreparedStatement ps = conn.prepareStatement(sql);
        // 给占位符?设置参数值

        ps.setInt(1,id);
        //executeUpdate()执行DML语句,返回受DML语句影响的行数,如果非0,表示成功,否则失败
        int rows = ps.executeUpdate();
        if(rows > 0) {
            System.out.println("删除学生成功!");
        }
        _db.closeAll(null, ps, conn);
    }

- 修改(更新)数据库数据

//加载数据库驱动
    private static final String driverClass = "com.mysql.cj.jdbc.Driver";
    //连接远程数据库地址
    private static final String url = "jdbc:mysql://127.0.0.1:3306/stu_dba?srverTimezone=Asia/Shanghai";
    //数据库用户名
    private static final String user = "root";
    //数据库密码
    private static final String password = "0415";
    //静态代码块 随着类的加载而加载 只加载一次
    static {
        try {
            //加载JDBC驱动程序
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("加载MySQL驱动类失败~~~");
        }
    }

    //获取数据库连接对象
    public Connection getConnection(){
        Connection con = null;
        try {
            /*
                DriverManager(驱动管理类):
                管理不同关系型数据库(比如:Oracle,MySQL,SQL,Server等)驱动程序大管家
             */
             con =  DriverManager.getConnection(url,user,password);
             return con;
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("操作数据库出错~~~");
            return null;
        }
    }

    //释放所有资源
    public void closeAll(ResultSet rs, PreparedStatement stmt, Connection con){
        if (null != rs){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (null != stmt){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (null != con){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /*
        访问权限
     */
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学号:");
        int id = scanner.nextInt();
        System.out.println("请输入出生日期:");
        String birthDate = scanner.next();
        System.out.println("请输入手机号:");
        String phone = scanner.next();
        System.out.println("请输入邮箱:");
        String email = scanner.next();

        jdbc_03 _db = new jdbc_03();
        //获取数据库连接对象
        Connection conn = _db.getConnection();
        System.out.println(conn.isClosed() == false ? "连接成功~" : "连接失败~");
        String sql = "update student set birth_date = ? ,phone = ?,email = ? where id = ?";
        PreparedStatement ps = conn.prepareStatement(sql);
        //给占位符?设置参数值
        ps.setString(1,birthDate);
        ps.setString(2, phone);
        ps.setString(3,email);
        ps.setInt(4,id);

        //executeUpdate() 执行DML语句,返回受DML语句影响的行数,如果非0
        int rows = ps.executeUpdate();
        if (rows>0){
            System.out.println("更新学生成功~");
        }
        _db.closeAll(null,ps,conn);
    }

注:应对某些方法进行了封装,所以我们在操作的时候只需要更改一下sql语句还有相对应的值即可,其他代码都是一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当我在前面说了什么时, 为什么狗会汪汪叫? 以下是 Java JDBC 批量增删数据库操作的代码示例: // 假设有一个名为 "users" 的表 // 数据库连接对象 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password"); // 要执行的 SQL 语句 String insertSql = "INSERT INTO users (name, age) VALUES (?, ?)"; String updateSql = "UPDATE users SET age = ? WHERE id = ?"; String deleteSql = "DELETE FROM users WHERE id = ?"; // 创建 PreparedStatement 对象 PreparedStatement insertStmt = conn.prepareStatement(insertSql); PreparedStatement updateStmt = conn.prepareStatement(updateSql); PreparedStatement deleteStmt = conn.prepareStatement(deleteSql); // 批量插入多条数据 insertStmt.setString(1, "Alice"); insertStmt.setInt(2, 18); insertStmt.addBatch(); insertStmt.setString(1, "Bob"); insertStmt.setInt(2, 20); insertStmt.addBatch(); insertStmt.setString(1, "Charlie"); insertStmt.setInt(2, 22); insertStmt.addBatch(); // 批量更新多条数据 updateStmt.setInt(1, 25); updateStmt.setInt(2, 1); updateStmt.addBatch(); updateStmt.setInt(1, 22); updateStmt.setInt(2, 2); updateStmt.addBatch(); // 批量删除多条数据 deleteStmt.setInt(1, 3); deleteStmt.addBatch(); deleteStmt.setInt(1, 4); deleteStmt.addBatch(); // 执行批量操作 int[] insertCounts = insertStmt.executeBatch(); int[] updateCounts = updateStmt.executeBatch(); int[] deleteCounts = deleteStmt.executeBatch(); // 关闭资源 insertStmt.close(); updateStmt.close(); deleteStmt.close(); conn.close(); 上述代码示例,我们首先获取了一个 MySQL 数据库连接对象,然后创建了三个 PreparedStatement 对象分别用于执行插入、更新和删除操作。接着,我们使用 PreparedStatement 的 addBatch() 方法向批处理添加多条记录,最后使用 executeBatch() 方法执行批量操作并获取每次操作所影响的行数。最后,我们关闭了资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值