向oracle中插入date时,持久层sql怎么写???

public class EmpDao {

    public void addEmp(Emp emp) throws SQLException {
            
        QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
        String sql = "INSERT INTO EMPS(ID,USERNAME,GENDER,SAL,HIREDATE) VALUES(?,?,?,?,?)";
        Object[] param = {emp.getId(),emp.getUsername(),emp.getGender(),emp.getSal(),new Timestamp(emp.getHiredate().getTime())};
        runner.update(sql, param);
        
    }
    
    public static void main(String[] args) throws SQLException{
        EmpDao dao = new EmpDao();
        Emp emp = new Emp();
        emp.setUsername("张三");
        emp.setGender("男");
        emp.setSal(100);
        emp.setHiredate(new Date());
        dao.addEmp(emp);
    }
    
}

以上是dao持久层的代码,我这里用的dbutils和c3p0连接池连接的数据库,遇到的问题就是无法往oracle中插入数据,原因是hiredate的数据类型是Date

解决办法:用new Timestamp(emp.getHiredate().getTime())时间戳就能轻松插入到oracle不用to_date()转换。

****************************** 注意 *********************************

时间戳导包时要导sql的包,我就是因为到错了包导致插入失败找了半天才发现。日期用utils包   

import java.sql.Timestamp;
import java.util.Date;

oracle 数据库中用Date类型就行了,我试了试用timestamp 也可以插入,但是值不太对,想摸索自己试试,反正用Date没事!!

create table emps(

  ....

  hiredate Date;

  ...

)

原文地址:https://www.cnblogs.com/zyh1994/p/5823351.html