Parse Error in Java Program

Deadly 提交于 2019-12-11 04:14:42

问题


the error occur near the parsing of proj_close_date.( java.text.ParseException: Unparseable date: "09/09/2010" ) i am reading project_close_date value from database which is in string format. i want convert it in to date format to find that, is proj_close_date present between from_date and to_date

public ArrayList viewAllCustProj1(String frm_date,String to_date,String cust,String proj)
{
    ArrayList list= new ArrayList();
    try
    {
        String strCust="";
        String strproj="";       

        if(!cust.equalsIgnoreCase("ALL") && !cust.equals(null))
        {
            strCust="and customer_code='"+cust+"'";
        }
        if(!proj.equalsIgnoreCase("ALL") && !proj.equals(null))
        {
            strproj="and project_code='"+proj+"'";
        }           
        if(cust.equalsIgnoreCase("ALL") && !proj.equalsIgnoreCase("ALL"))
        {

        }
        else
        {
            stmt=conn.prepareStatement("select customer_code from mst_customer where visible=1 "+strCust+" and category='EU' and multiple_project=0");
            rs=stmt.executeQuery();
            while(rs.next())
            {
                reportBean bean=new reportBean();
                bean.setCust_code(rs.getString("customer_code"));
                bean.setProject_code("");
                list.add(bean);
            }
            rs.close();
            stmt.close();
        }   


        System.out.println(" select  customer_code,project_code,proj_close_date,added_on from mst_project where visible=1 "+strCust+" "+strproj+"");
        stmt=conn.prepareStatement("select customer_code,project_code,proj_close_date,added_on from mst_project where visible=1 "+strCust+" "+strproj+"");
        rs=stmt.executeQuery();
        while(rs.next())
        {
            reportBean bean=new reportBean();

            String proj_close_date=rs.getString(3);
            String added_on=rs.getString(4);

            DateFormat myDateFormat = new SimpleDateFormat("MM-dd-yyyy");

            DateFormat myDateFormat1= new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");

            Date myDate1 = null;   
            Date myDate2 = null;
            Date myDate3 = null;
            Date myDate4 = null;
            Date myDate5 = null;
          try
            {
              if(proj_close_date==null || proj_close_date.trim().equals("") || proj_close_date=="NULL")
              {
                  System.out.println("\n ****** In IF Loop ");
                  bean.setCust_code(rs.getString("customer_code"));
                  bean.setProject_code(rs.getString("project_code"));
                  list.add(bean);
              }
              else
              {
                    System.out.println("\n ****** In Else Loop ");
                    myDate1 = myDateFormat.parse(proj_close_date);
                    myDate2 = myDateFormat.parse(frm_date);
                    myDate3 = myDateFormat.parse(to_date);
                    myDate5 = myDateFormat1.parse(added_on);

                   //myDate4 = myDateFormat.format(myDate5);

                    System.out.println("Project Code ---->"+rs.getString(2));                                            
                    System.out.println("Proj_close_date ------>"+myDate1);
                    System.out.println("From Date ---->"+myDate2);
                    System.out.println("to Date ---->"+myDate3);
                    //System.out.println("Added_on --->"+myDate4);
                    System.out.println("Added_on 1 ie Date 5 ---->"+myDate5);

                    if(myDate1.after(myDate2) && myDate1.before(myDate3))  // means --> if(proj_close_date.after(frm_date) && proj_close_date.before(to_date))
                     {                           
                        if(myDate1.after(myDate4))  // means --> if(proj_close_date.after(added_on))
                        {
                            bean.setCust_code(rs.getString("customer_code"));
                            bean.setProject_code(rs.getString("project_code"));
                            list.add(bean);
                        }               
                       else
                       {
                           bean.setCust_code(rs.getString("customer_code"));
                           bean.setProject_code(rs.getString("project_code"));
                           list.add(bean);
                       } 
                   }//if    
              }//else

            }//try  
            catch (ParseException e)
           {
                 System.out.println("Invalid Date Parser Exception ");
                 e.printStackTrace();
           }


        }
        rs.close();
        stmt.close();

    }
    catch(SQLException sex)
    {
        sex.printStackTrace();
    }
    finally
    {
        closeConnection();
    }
    return list;
}

回答1:


Change this line

DateFormat myDateFormat = new SimpleDateFormat("MM-dd-yyyy");

to this:

DateFormat myDateFormat = new SimpleDateFormat("MM/dd/yyyy");

However, it's quite unclear why you get all the values as strings, perhaps you should consider dedicated ResultSet methods such as getDate or getTimeStamp.

As another side remark I'd like to mention that building SQL queries by concatenation should be avoided -- you should generate queries with ? placeholders, and then set the parameters on your PreparedStatement.



来源:https://stackoverflow.com/questions/3723710/parse-error-in-java-program

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!