<%
request.setCharacterEncoding("GB18030");
String action = request.getParameter("action");
if(action != null&&action.equals("register")){
String username = request.getParameter("username");
String password = request.getParameter("password");
String phone = request.getParameter("phone");
String addr = request.getParameter("addr");
User u = new User();
u.setUsername(username);
u.setPassword(password);
u.setPhone(phone);
u.setAddr(addr);
u.setRdate(new java.util.Date(System.currentTimeMillis()));
u.save();

}
 %>红色部分出的错,错误提示:Multiple annotations found at this line:
- The method setRdate(Timestamp) in the type User is not applicable for the arguments 
 (Date)
我的user类:
package com.bjsxt.shopping;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;import com.bjsxt.shopping.util.DB;
import com.sun.jmx.snmp.Timestamp;
public class User {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public Timestamp getRdate() {
return rdate;
}public void setRdate(Timestamp rdate) {
this.rdate = rdate;
}
private String username;
private String password;
private String phone;
private String addr;
private Timestamp rdate;public void save(){
Connection conn = DB.getConn();
String sql = "insert into user values (null,?,?,?,?,?)";
PreparedStatement pstmt = DB.getPStmt(conn,sql);
try {
pstmt.setString(1,username);
pstmt.setString(2, password);
pstmt.setString(3, phone);
pstmt.setString(4, addr);
pstmt.setTimestamp(5, new Timestamp(rdate.getDateTime()));
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}



}这里也有个错误。错误提示:The method setTimestamp(int, Timestamp) in the type PreparedStatement is not applicable for the arguments (int, 
 Timestamp)求解,这个我是照着别人的代码敲的,为什么别人不出错,我倒出错了。

解决方案 »

  1.   

    把数据库中的User表的日期字段的类型设为date试一试。
      

  2.   

    引入的类错了
    应该是这个
    java.sql 
    类 Timestamp
    java.lang.Object
      java.util.Date
          java.sql.Timestamp
      

  3.   

    User类中的:public void setRdate(Timestamp rdate) {
    this.rdate = rdate;
    }传递的是Timestamp类型,而你下面给的是java.util.Date类型u.setRdate(new java.util.Date(System.currentTimeMillis()));将上面的代码改为:u.setRdate(new java.sql.Timestamp(System.currentTimeMillis()));
      

  4.   

    看看你的Date类是不是sql或者util没有区分清楚啊!
    还有就是你把你的时间直接转换成为你对应的数据类型!!
      

  5.   

    The method setRdate(Timestamp) in the type User is not applicable for the arguments  
    方法setRdate在User中参数不适应。
      

  6.   

    数据类型你引错了 1.u.setRdate(new java.util.Date(System.currentTimeMillis()));  2.import com.sun.jmx.snmp.Timestamp;
     
     应该是import java.sql.Timestamp;
     
    当前时间 Timestamp timestamp = new Timestamp(System.currentTimeMillis());这么获取
      

  7.   

    Timestamp 去掉 ,改为util.Data
      

  8.   

    你的setDate方法的参数类型是String,但是你传入得是Date类型的
      

  9.   

    Timestamp是java.util.Date的子类,父类不能当做子类用啊,u.setRdate(new java.util.Date(System.currentTimeMillis()));不要new Date,换成Timestamp试试。rdate本来就是Timestamp类型的,可以直接pstmt.setTimestamp(5, rdate);
      

  10.   

    楼上的回答基本都把你问题解决了。
    建议楼主以后有问题,先看Error信息。
    那样能帮助你提高自己解决问题的能力
      

  11.   

    #2 说得对,java.sql.Timestamp 类 是java.util.Date 子类,而你现在引用的是com.sun.jmx.snmp.Timestamp;
    不报错才怪。