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;
...
)