prepareStatement不更新oracle数据库

时间:2013-10-27 19:54:44

标签: java sql html5 oracle jsp

我使用jsp中的表单来限制用户输入以更新数据库。我刚开始学习jsp和java。非常感谢您提供的任何帮助。

以下是表单的引用:

<FORM ACTION="display.jsp" method ="get">
  <label>Semester:</label>
    <select name="semester">
    <option selected="selected">Semester Select</option>
              <option value='Spring'>Spring 2007 </option>
              <option value='January Intersession'>January Intersession 2007 </option>
              <option value='Fall'>Fall 2006 </option>
              <option value='Summer ALL'>Summer ALL 2006 </option>
              <option value='Summer00'>Summer00 2006 (06/01/2006 to 08/17/2006)</option>
              <option value='Summer02'>Summer02 2006 (07/10/2006 to 08/17/2006)</option>
              <option value='Summer01'>Summer01 2006 (06/01/2006 to 07/06/2006)</option>
    </select>
<br/><br/>
<label>Start Date:</label>
  <INPUT TYPE="TEXT" NAME="startDate"><br/><br/>
<label>End Date:</label>
  <INPUT TYPE="TEXT" NAME="endDate"><br/><br/>
  <INPUT TYPE="SUBMIT" value="Update Schedule" name="submitButton"> <!-- Press this button to submit form -->
</FORM>

以下是jsp的代码:

<%@ page import="java.sql.*" %>
<%
   Connection conn = null;
   try
   {
       // 1. Load the driver
       String driver = "oracle.jdbc.OracleDriver";
       Class.forName(driver);

      // 2. Define the connection URL
      String url = "..."; //orcl is the SID
      String myusername = "..."; // Your DB login ID
      String mypassword = "..."; //Your Db pass

      // 3. Establish the connection
      conn = DriverManager.getConnection(url, myusername,mypassword);
      conn.setAutoCommit(false);

      // 4. Create a statement object
      Statement stmt = conn.createStatement();
      PreparedStatement ps;

      // 5. Execute a query
      String startDate = request.getParameter("startDate");
      String endDate = request.getParameter("endDate");
      String semester = request.getParameter("semester");
      String updateQuery = "UPDATE semester_schedule_reader SET start_date = ?, end_date = ? WHERE semester = ?";
      ps = conn.prepareStatement(updateQuery);
      ps.setString(1, startDate);
      ps.setString(2, endDate);
      ps.setString(3, semester);
      ps.executeUpdate();
      conn.commit();


      ResultSet rs = stmt.executeQuery("SELECT SEMESTER_ID, START_DATE, END_DATE, SEMESTER_NAME, SEMESTER FROM SEMESTER_SCHEDULE_READER");




      //Print start of table and column headers
      out.println("<table width=600 border=1>");
      out.println("<tr><th>Semester ID</th><th>Start Date</th><th>End Date</th><th>Semester Name</th><th>Semester</th></tr>");

      // 6. Process result
      //column names and Data types has to match Db columns
      while(rs.next())
      {
         out.println("<TR>");
         out.println("<TD>" + rs.getString("SEMESTER_ID") + "</TD>");
         out.println("<TD>" + rs.getString("START_DATE") + "</TD>");
         out.println("<TD>" + rs.getString("END_DATE") + "</TD>");
         out.println("<TD>" + rs.getString("SEMESTER_NAME") + "</TD>");
         out.println("<TD>" + rs.getString("SEMESTER") + "</TD>");
         out.println("</TR>");
      }

      out.println("</table>");
   }
   catch(SQLException e)
   {
      // Do exception catch such as if connection is not made or 
      // query is not set up properly
      out.println("SQLException: " + e.getMessage() + "<BR>");
      while((e = e.getNextException()) != null)
         out.println(e.getMessage() + "<BR>");
   }
   catch(ClassNotFoundException e)
   {
      out.println("ClassNotFoundException: " + e.getMessage() + "<BR>");
   }
   finally
   {
// 7. Close connection; Clean up resources
      if(conn != null)
      {
         try
         {
            conn.close();
         }
         catch (Exception ignored) {}
      }

      if(ps != null)
      {
          ps.close();
      }
   }
%>

0 个答案:

没有答案