java.util.Date cannot be cast to java.sql.Date 將date類型的數據存入數據庫

頁面接受的date是java.util.date,放入數據庫要用java.sql.date,實現兩者之間的轉化:

1.user.java

package model;
import java.util.Date;
public class User {
	public String username,password,address,email;
	Date birth;
	public User(){
	}
	public User(String username, String password, String address, String email, Date birth) {
		super();
		this.username = username;
		this.password = password;
		this.address = address;
		this.email = email;
		this.birth = birth;
	}
	//getter,setter方法。。略	
}

2.add.jsp:註冊頁面(我寫的是struts2項目,但是將date放入數據庫的例子是常見的)

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- struts2標籤庫調用聲明 -->
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>註冊</title>
</head>
<body>
<s:form action="add" methods="post">
<s:fielderror/>
<table width="60%" height="76" border="0">
<s:textfield name="user.username" label="用戶名"/>
<s:password name="user.password" label="密 碼"/>
<s:textfield name="user.email" label="郵  箱"/>
<s:textfield name="user.address" label="地  址"/>
<s:textfield name="user.birth"  format="yyyy-MM-dd" nice="false" label="出生日期"/>
<!--<s:textfield name="user.birth" label="出生日期"/>-->
<s:submit value="註冊" align="center"/>
</table>
</s:form>
</body>
</html>

3.AddAction.java

package com;
import com.opensymphony.xwork2.ActionSupport;
import java.util.*;
import dao.AddDao;
import model.User;
public class AddAction extends ActionSupport{
	private static String FORWARD=null;//頁面導向
	private User user =new User();
 	//private User user; 
   	public User getUser() {
       return user;
   	}
   	public void setUser(User user) {
       this.user = user;
   	}
	public String execute() throws Exception{
		AddDao dao=new AddDao();
		User u=new User();
		u=dao.findName(this.user.getUsername());
		if(u.getUsername()==null){
			System.out.println("註冊成功");
			// System.out.println(this.user.getUsername());
			// System.out.println(u.getUsername());
			// System.out.println(u.getBirth());
			dao.add(this.user);//在AddDao中
			FORWARD="success";
		}
		else{
			System.out.println("註冊失敗");
			FORWARD="input";
		}
		return FORWARD;
	}
}

4.AddDao.java

package dao;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import model.User;

public class AddDao {
	Connection con;
	String driver="com.mysql.jdbc.Driver";
	String url="jdbc:mysql://localhost:3306/struts2";
	public AddDao(){
		try{ 
			Class.forName(driver);
			this.con=DriverManager.getConnection(url,"root","root");
		}catch(Exception e){
			e.printStackTrace();
		}
	}
/*

public void add(User user){
	String sql="INSERT INTO user(username,password,address,email,birth) VALUES ( ?, ?, ?, ? ,?)";
	try {
		PreparedStatement cmd=this.con.prepareStatement(sql);
		cmd.setString(1, user.getUsername());
		cmd.setString(2, user.getPassword());
		cmd.setString(3, user.getAddress());
		cmd.setString(4, user.getEmail());
		cmd.setDate(5, new java.sql.Date(user.getBirth().getTime()));//重點
		cmd.executeUpdate();
	} catch (SQLException e) {
	// TODO Auto-generated catch block
		e.printStackTrace();
	}
...
}


發佈了44 篇原創文章 · 獲贊 15 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章