记录---ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法

记录—ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法

先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();

关键出问题的是以下代码:
记录---ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法
可以看到我这里是有进行强制的转换的,但代码还是会报错,如果你也是这样的情况可以试一下像下面一样进行单独的转换:

在这里插入代码片
			`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语句。
记录---ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法

以上

上一篇:9.4类的加载器(了解内容)


下一篇:MapReduce的数据输出到MySQL