JDBC连接数据库时出现时间匹配错误
IDEA中若我们向数据库插入关于时间的数据时,因为我们使用的是java.util.Date的时间,此时会出现报错。
可以修改为:java.sql.Date
pps.setDate(3, new java.sql.Date(date.getTime()));
代码如下:
@Test
public void testInsert() {
InputStream rs = null;
PreparedStatement pps = null;
Connection conn = null;
try {
//插入数据前先要获取数据库的连接
rs = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
Properties ps = new Properties();
ps.load(rs);
String user = ps.getProperty("user");
String password = ps.getProperty("password");
String url = ps.getProperty("url");
String driverClass = ps.getProperty("driverClass");
//加载驱动
Class.forName(driverClass);
//获取连接
conn = DriverManager.getConnection(url, user, password);
String sql = "insert into customers(name,email,birth)values(?,?,?)";
//获取preparedstatement的实例
pps = conn.prepareStatement(sql);
pps.setString(1, "哪吒11");
pps.setString(2, "nezha@123");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//因为需要的是DATE类型的,字符串不行
//String format = date.format(date);
Date date = sdf.parse("1000-01-01");
//错误是因为此时我们提供的是java.util.Date下的时间,而sql语句需要的是java.sql.Date的时间
pps.setDate(3, new java.sql.Date(date.getTime()));
//报错的用法
//pps.setDate(3, new (date.getTime()));
pps.execute();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(pps !=null)
pps.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
try {
rs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}