PreparedStatement怎么没有setDate方法(10分)

  • 主题发起人 游委宾
  • 开始时间

游委宾

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中要用到它的setDate方法,
当在JBuilder的IDE中输入preStatement.时,可以看到setDate方法,输入setDate后,可
以看以参数说明,但编译的时候怎么出错,
说“Method setDate not found in.....”
public synchronized boolean updateUserInfo(int userId, User user)
{
Connection conn = null;
PreparedStatement preStatement = null;
try
{
String sSql = "UPDATE users set "
+ "nickname=?, password=?, question=?, "
+ "answer=?, email=?, description=?, "
+ "tag=?, use_point=?, expert_point=?, "
+ "forum_id=?, last_access=? WHERE id=?";
conn = ForumDb.getConn();
preStatement = conn.prepareStatement(sSql);
preStatement.setString(1, user.getNickname());
preStatement.setString(2, user.getPassword());
preStatement.setString(3, user.getQuestion());
preStatement.setString(4, user.getAnswer());
preStatement.setString(5, user.getEmail());
preStatement.setString(6, user.getDesc());
preStatement.setString(7, user.getTag());
preStatement.setInt(8, user.getUsePoint());
preStatement.setInt(9, user.getExpertPoint());
preStatement.setInt(10, user.getForumId());
preStatement.setDate(11, user.getLastAccess());
preStatement.setInt(12, userId);
preStatement.execute(sSql);
return true;
}
catch (SQLException ex)
{
return false;
}
catch (ClassNotFoundException ex)
{
return false;
}
finally
{
try
{
preStatement.close();
conn.close();
}
catch (SQLException ex)
{
}
}
}
 
干嘛不把错误贴全?关键在最后啊。
user.getLastAccess()返回的不是Date型吧?[:D]
 
user.getLastAccess()返回的是Date类型呀。
编译时出错信息为“"UserManager.java": Error #: 300 : method setDate(int, java.util.Date) not found in interface java.sql.PreparedStatement at line 193, column 26”
 
需要的类型是java.sql.date,而不是java.util.Date,仔细看看jdbc的文档啊。
查一下PreparedStatement的doc也可以看到的。[:(]
 
请把preStatement.setDate(11, user.getLastAccess());改为
preStatement.setDate(11, new java.sql.Date(user.getLastAccess().getTime());
试一下.但毫秒不能转换为.
 
多人接受答案了。
 
顶部