先po代码:
//1.读取配置文件中的基本信息 InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties"); Properties pros = new Properties(); pros.load(is); String user = pros.getProperty("user"); String password = pros.getProperty("password"); String url = pros.getProperty("url"); String driverClass = pros.getProperty("driverClass"); //2.加载驱动 Class.forName(driverClass); //3.获取连接 conn = DriverManager.getConnection(url, user, password); //4.预编译sql语句,返回PreparedStatement的实例 String sql = "insert into customers(name,email,birth)values(?,?,?)";//?:占位符 ps = conn.prepareStatement(sql); //5.填充占位符 ps.setString(1, "哪吒"); ps.setString(2, "nezha@gmail.com"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = sdf.parse("1000-01-01"); ps.setDate(3, (java.sql.Date) new Date(date.getTime())); ps.execute(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //7.资源的关闭 try { if(ps != null) ps.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if(conn != null) conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace();
关键出问题的是以下代码:
可以看到我这里是有进行强制的转换的,但代码还是会报错,如果你也是这样的情况可以试一下像下面一样进行单独的转换:
在这里插入代码片 `SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = sdf.parse("1000-01-01"); java.sql.Date datesql = new java.sql.Date(date.getTime()); ps.setDate(3, datesql);`
像上面这样报错就会解决,数据库表中也会执行相应的sql语句。
以上