大家好!我的“约会”有问题。它需要解析,但我不知道该怎么做。有人可以通过建议修复我的代码来帮助我吗?
<%
String format = "yyyy-MM-dd";
DateFormat df = new SimpleDateFormat(format);
String faculty = request.getParameter("faculty");
String absent_date = request.getParameter("absent_date");
int intFaculty = Integer.parseInt(faculty);
System.out.println(faculty);
System.out.println(df.parse(absent_date));
java.sql.Date absentdate = new java.sql.Date(df.parse(absent_date).getDate());
Absences abs = new Absences();
abs.setFaculty_id(intFaculty);
abs.setAbsent_date(absentdate);
int result = AbsencesImpl.AddAbsences(abs);
if (result == 0)
{
%>
<jsp:forward page="ListAbsences.jsp">
<jsp:param name="msg" value="Record Successfully Added"/>
<jsp:param name="ret" value="meron"/>
</jsp:forward>
<%
}
%>
对于控制台中的结果和错误:
5
Tue May 01 00:00:00 CST 2012
java.sql.SQLException: 3 values for 2 columns
我发现了这个,但我不知道如何在我的代码上实现这一点。
SimpleDateFormat parserSDF=new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
我正在使用Eclipse Indigo,Sqlite和Apache Tomcat
插入声明(我使用MVC)
public int AddAbsences(Absences abs)
{
Connection con = null;
PreparedStatement pstmt;
ConnDB conn = new ConnDB();
String sql = "INSERT INTO absences( faculty_id, absent_date) VALUES(?, ?)";
try{
con = conn.connect();
try{
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, abs.getFaculty_id());
pstmt.setDate(2, abs.getAbsent_date());
pstmt.executeUpdate();
}catch(Exception e){
System.out.println(e);
}
con.close();
}catch(Exception e){
System.out.println(e);
}
return 0;
}
答案 0 :(得分:0)
我建议使用
df.parse(absent_date).getTime()
而不是
df.parse(absent_date).getDate()
而且,我怀疑你有3列的表缺席,但你尝试只插入2个值。如果table中的一个值是id,那么我怀疑这个值不是自动生成的。
希望它会对你有所帮助。
答案 1 :(得分:0)
尝试制定一个insert语句,该语句可以从数据库管理控制台(也就是你的数据库)中运行,然后尝试用代码替换代码中的相同内容。在那里你也会得到日期格式。您可以在查询本身中使用一些sql日期函数,这些日期函数将从您的代码可读格式转换日期。
例如:在MsSQL中 - 强制转换('20120312'作为日期时间)会将字符串日期12-03-2012转换为日期时间。
尝试为您的数据库类型搜索sql日期函数。