[JDBC]PreparedStatement替代Statement

一.增

复制代码
    @Test
    public void testInsert() throws Exception {
        try(Connection con = ConnectDB();
            Scanner input = new Scanner(System.in)){

            System.out.print("请输入姓名:");
            String ename = input.next();//李四

            System.out.print("请输入薪资:");
            double salary = input.nextDouble();//15000

            System.out.print("请输入出生日期:");
            String birthday = input.next();//1990-1-1

            System.out.print("请输入性别:");
            char gender = input.next().charAt(0);//男
//        String gender = input.next();

            System.out.print("请输入手机号码:");
            String tel = input.next();//13578595685

            System.out.print("请输入邮箱:");
            String email = input.next();//zhangsan@atguigu.com

            //编写sql
            String sql = "insert into t_employee(ename,salary,birthday,gender,tel,email,hiredate) " +
                    "values(?,?,?,?,?,?,curdate())";

            //告诉数据库执行 INSERT 操作后,返回自动生成的主键值(比如自增 ID)
            PreparedStatement preparedStatement = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
            //需要填写?对应的值
            preparedStatement.setObject(1, ename);
            preparedStatement.setObject(2, salary);
            preparedStatement.setObject(3, birthday);
            preparedStatement.setObject(4, gender + "");//char变为String类型
            preparedStatement.setObject(5, tel);
            preparedStatement.setObject(6, email);

            int len = preparedStatement.executeUpdate();
            if(len > 0){
                System.out.println("添加成功! len = " +  len);
            }else{
                System.out.println("添加失败!");
            }
            preparedStatement.close();
        }
    }

一个关于PeparedStatement的insert的错误

二.删

复制代码
@Test
public void testDelete() throws Exception {
    String sql = "delete from t_employee where eid = ?";
    try(Connection con = ConnectDB();
        PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);){
        ps.setInt(1,32);
        int len = ps.executeUpdate();
        if(len > 0){
            System.out.println("删除成功! len = " + len);
        }else{
            System.out.println("删除失败!");
        }
    }
    catch (Exception e){
        e.printStackTrace();
    }
}

三.改

复制代码
@Test
public void testUpdate() throws Exception {
    try(Connection con = ConnectDB();
    PreparedStatement ps = con.prepareStatement("update t_employee set ename = ? where eid = ?");
    Scanner input = new Scanner(System.in)){

        System.out.println("请输入要修改的姓名:");
        String ename = input.next();
        System.out.println("请输入要修改的员工ID:");
        int eid = input.nextInt();
        ps.setString(1,ename);
        ps.setInt(2, eid);

        int len = ps.executeUpdate();
        if(len > 0){
            System.out.println("修改成功! len = " + len);
        }else{
            System.out.println("修改失败!");
        }

    }catch(Exception e){
        e.printStackTrace();
    }
}
相关推荐
聚美智数1 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
十年Java程序媛2 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
瀚高PG实验室2 小时前
瀚高数据库常用系统表查询入门指南(附常用SQL)
数据库·sql·postgresql·瀚高数据库
我是人✓2 小时前
SpringBoot静态资源映射揭秘
java·spring boot·后端
ben9518chen2 小时前
mysql数据库基本操作
数据库·mysql
2603_965148112 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
土豆.exe2 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
缓慢更新3 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
小坏讲微服务3 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
kunicoding4 小时前
多线程编程核心概念详解:从线程基础到并发安全
java·jvm·安全