0

Can Someone help me to solve the error. I am getting error when I pass the date String ex:"01-JAN-2015" as Parameter in setString ?

javax.servlet.ServletException: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in date in query expression '(Event_Dairy) between #Pa_RaM000# and #Pa_RaM001#'.

    String url="jdbc:odbc:kaso";
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
    Connection conn=DriverManager.getConnection(url);       
    PreparedStatement ppdsmt=conn.prepareStatement("select * from Event_Dairy where(Event_Dairy) between #?# and #?#");
    ppdsmt.setString(1,sdate); 
    ppdsmt.setString(2,edate); 
    ResultSet rs=ppdsmt.executeQuery();
    if(!rs.next())
    {
        out.println("NO RECORDS FOUND");
    }
    else
    {%>
        <table border="2">           
         <tr>
             <td>Event Date</td>
             <td>Subject</td>
             <td>Subject Heading</td>
        </tr>
        <%
        do
        {
            eventDate=rs.getString("Event_Dairy");  
            System.out.println("Event Date"+eventDate);
            Subject=rs.getString("Subject");
            Subject_Heading=rs.getString("Subject_Heading"); 
         %>
          <tr>
                <td><%=eventDate%></td>
                <td><%=Subject%></td>
                <td><%=Subject_Heading%></td>
          </tr>
        <%
        }while(rs.next());
    }
Dhanuka
  • 2,826
  • 5
  • 27
  • 38

1 Answers1

1

Use java.sql.Date (or java.sql.Timestamp) instead of String. See Using setDate in PreparedStatement

And no # characters around the ? placeholders in the query.

Community
  • 1
  • 1
Jozef Chocholacek
  • 2,874
  • 2
  • 20
  • 25