输入员工入职时间需要定义的属性的数据类型是什么

输入员工入职时间需要定义的属性的数据类型是什么

在方法里输入员工入职时间需要定义的属性的数据类型是什么

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2022-06-22 15:31:19

同学你好,使用字符串String类型来接收从控制台输入的日期,再将输入的字符串String类型的日期格式转换为Date类型,使用pstmt.setDate()方法为sql语句中的占位符赋值。

另:同学描述的方法类输入具体指的是什么呢?若不是老师上述回复的内容 则建议同学再具体描述下问题哦,老师再给予解答。

祝学习愉快~

  • 提问者 慕仰4837686 #1

    我这从控制台输入日期,再插入到数据库的代码老报错,需要修改哪

    package com.imooc.sample.jdbc.hrapp.command;
    
    import com.imooc.sample.jdbc.common.DbUtils;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    
    import java.util.Scanner;
    
    /**
     * @ClassName InsertCommand
     * @description:
     * @author: 自己名字
     * @create: 2022-06-22 09:11
     **/
    public class InsertCommand implements Command {
        @Override
        public void execute() {
            Scanner sc=new Scanner(System.in);
            System.out.println("已进入插入部门员工信息程序:");
            System.out.println("请输入员工编号:");
            Integer ineno=sc.nextInt();
            System.out.println("请输入员工姓名:");
            String inename=sc.next();
            System.out.println("请输入员工工资:");
            Float insalary=sc.nextFloat();
            System.out.println("请输入员工部门:");
            String indname=sc.next();
            System.out.println("请输入员工入职日期:");
            String inhiredate=sc.next();
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            Date date=null;
            Connection con=null;
            PreparedStatement pstmt=null;
            try {
                date=sdf.parse(inhiredate);
                con= DbUtils.getConnection();
                pstmt=con.prepareStatement("insert into employee (eno,ename,salary,dname,hiredate) values (?,?,?,?,?)");
                pstmt.setInt(1,ineno);
                pstmt.setString(2,inename);
                pstmt.setFloat(3,insalary);
                pstmt.setString(4,indname);
                pstmt.setDate(5, (java.sql.Date) date);
                int c=pstmt.executeUpdate();
                System.out.println("已成功插入"+c+"条员工信息");
            }catch (ParseException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }finally {
                DbUtils.closeConnection(null,pstmt,con);
            }
    
    
        }
    }


    2022-06-22 19:19:06
  • 好帮手慕小小 回复 提问者 慕仰4837686 #2

    同学你好,使用java.sql.Date中的valueOf()方法,将字符串类型的日期格式转换为java.sql.Date类型的日期,并将catch中打印异常信息修改为具体的提示信息试下。参考代码如下:

    import com.imooc.jdbc.common.DbUtils;
    import com.imooc.jdbc.hrapp.command.Command;
    
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.PreparedStatement;
    import java.util.Scanner;
    
    public class InsertCommand implements Command {
        public static void main(String[] args) {
            new InsertCommand().execute();
        }
    
        @Override
        public void execute() {
            Scanner sc = new Scanner(System.in);
            System.out.println("已进入插入部门员工信息程序:");
            System.out.println("请输入员工编号:");
            Integer ineno = sc.nextInt();
            System.out.println("请输入员工姓名:");
            String inename = sc.next();
            System.out.println("请输入员工工资:");
            Float insalary = sc.nextFloat();
            System.out.println("请输入员工部门:");
            String indname = sc.next();
            System.out.println("请输入员工入职日期:");
            String inhiredate = sc.next();
            Date date = null;
            Connection con = null;
            PreparedStatement pstmt = null;
            try {
                date = Date.valueOf(inhiredate);
                con = DbUtils.getConnection();
                pstmt = con.prepareStatement("insert into employee (eno,ename,salary,dname,hiredate) values (?,?,?,?,?)");
                pstmt.setInt(1, ineno);
                pstmt.setString(2, inename);
                pstmt.setFloat(3, insalary);
                pstmt.setString(4, indname);
                pstmt.setDate(5, date);
                int c = pstmt.executeUpdate();
                System.out.println("已成功插入" + c + "条员工信息");
            } catch (ClassNotFoundException e) {
                System.out.println("驱动类加载失败");
            } catch (Exception throwables) {
                System.out.println("输入有误,添加失败");
            } finally {
                DbUtils.closeConnection(null, pstmt, con);
            }
        }
    }

    https://img1.sycdn.imooc.com//climg/62b3d297099698a605130510.jpg

    另外建议同学可以将具体的报错信息复制粘贴或截图上传至问答区,便于快速的定位问题。

    祝学习愉快~

    2022-06-23 10:40:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师