日期转换问题
直接在
pstmt.setDate();
这里面传入Java.util.date不可以吗?不是说两者是可以通用的吗?
emp.setHiredate(hiredate);
这里不就可以直接转换吗? hiredate 是子类, emp.hiredate是父类, 因为存在继承,所以可以通用。
那为什么在insert中就不可以了呢?
问题2:
为什么转换成了1992-01-30啊
package com.imooc.jdbc.hrapp.command;
import com.imooc.jdbc.common.JdbcUtils;
import javax.sound.midi.Soundbank;
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;
//4-2实现JDBC新增
public class InsertCommand implements Command{
/**
* 新增员工数据
*/
@Override
public void execute() {
//用来接收用户员工的输入
Scanner in=new Scanner(System.in);
System.out.println("请输入员工编号:");
Integer eno=in.nextInt();
System.out.println("请输入员工姓名:");
String name=in.next();
System.out.println("请输入员工薪资:");
Float price=in.nextFloat();
System.out.println("请输入隶属部门:");
String dname=in.next();
System.out.println("请输入入职日期:");
String strHiredate=in.next();
//1、将字符串转换成java.util.date;
//对字符串日期格式化
java.util.Date udHiredate=null; //util .date
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-HH-dd");
//对字符串解析
try {
udHiredate= sdf.parse(strHiredate);
} catch (ParseException e) {
e.printStackTrace();
}
//2、将java.util.date转换成java.sql.date
long time=udHiredate.getTime(); //获取自1970年到现在的毫秒数
//将毫秒数转化成java.sql.date
java.sql.Date sdHiredate=new java.sql.Date(time);
Connection conn=null;
PreparedStatement pstmt=null;
try {
//1、使用封装类,JdbcUtils获取对JDBC驱动的加载和创建数据库连接;
conn =JdbcUtils.getConnection();
//2、创建preparedStatement对象,防止sql注入攻击;
String sql="insert into employee(eno,ename,salary,dname,hiredate) values (?,?,?,?,?)";
pstmt =conn.prepareStatement(sql);
//对参数进行赋值;
pstmt.setInt(1, eno);
pstmt.setString(2, name);
pstmt.setFloat(3, price);
pstmt.setString(4,dname);
pstmt.setDate(5,sdHiredate);
//执行更新;
int cnt= pstmt.executeUpdate();
System.out.println("cnt:"+cnt);
System.out.println("员工入职手续已办理");
} catch (Exception e) {
e.printStackTrace();
}finally {
//3、对连接关闭,释放资源;
JdbcUtils.closeConnection(null,pstmt,conn);
}
}
}
18
收起
正在回答 回答被采纳积分+1
1回答
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星