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;

  ...

)

相关文章:

  • 2021-08-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-08
  • 2021-12-22
猜你喜欢
  • 2022-12-23
  • 2022-02-12
  • 2022-12-23
  • 2022-02-01
  • 2022-01-21
  • 2021-09-02
  • 2021-11-02
相关资源
相似解决方案