2012-04-01 141 views
1

大家好!我的“日期”有问题。它需要被解析,但我不知道该怎么做。可以通过在我的代码上建议修复来帮助我吗?Java中的解析日期

<% 
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靛蓝,SQLite的,和Apache Tomcat

插入语句(IM使用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; 
} 
+1

我认为你的sql是错误的。您为2列插入3个值。向我们展示插入查询。 – 2012-04-01 07:22:59

+0

我知道这并不是100%的答案,但只要您需要使用Java中的日期,请亲自动手并使用Joda Time。 http://joda-time.sourceforge.net/ – moodywoody 2012-04-01 07:23:19

+0

我已经包含了插入语句。 – Zark 2012-04-01 07:28:40

回答

0

我会建议使用

df.parse(absent_date).getTime() 

,而不是

df.parse(absent_date).getDate() 

此外,我怀疑你有3列缺席,但你尝试只插入2个值。如果表中的一个值是id,那么我怀疑这个值不是自动生成的。

希望它能帮助你。

+0

非常感谢主席先生的回答。它解决了我的两个问题。干杯! – Zark 2012-04-01 08:20:55

+0

我注意到在我的数据库中插入的日期是“30.12.1899”。他们全部。但在浏览器或jsp中。它显示选定的日期。例如:在浏览器(“2012-04-24”)中,但在数据库中(“30.12.1899”)。这里可能是什么问题? – Zark 2012-04-01 08:35:00

0

试着制定一个插入语句,它将从数据库管理控制台(这是你的数据库)工作,然后尝试用代码中的参数代替它。在那里你也会得到日期格式。有一些SQL日期函数可以在查询本身中使用,它将从您的代码可读格式中转换日期。

例如:在MsSQL中 - cast('20120312'作为日期时间)将字符串日期12-03-2012转换为日期时间。

尝试为您的数据库类型搜索sql日期函数。