Mysql запись таблицы не обновляется с помощью запроса на обновление - PullRequest
0 голосов
/ 20 февраля 2020

В моей базе данных есть две таблицы (Имя базы данных: dmsqms), т.е. dmsmembers и dmsfiles. Для dmsmembers «zid» является первичным ключом, а для dmsfiles «document_name» является первичным ключом. Столбец "zid" одинаков для обеих таблиц. Когда пользователь регистрируется, то записывает хранилища в dmsmembers. Когда пользователь сохраняет форму (index. jsp), эта запись сохраняется в таблицу dmsfiles. У меня также есть один список файлов. jsp, где все записи выбираются из базы данных с помощью запроса " select * from dmsfiles ". В списке файлов. jsp, для каждой записи / строки есть одна кнопка Редактировать . Когда пользователь нажимает «Изменить», открывается соответствующая форма jsp, затем пользователь вносит изменения в соответствии с потребностями и нажимает кнопку «Обновить». Теперь проблема в том, что когда пользователь нажимает кнопку «Обновить», он перенаправляется на следующую страницу, но запись не обновляется. С моей точки зрения может быть проблема первичного ключа.

список файлов JSP. jsp

<body>
<br>
<center><h3><i>Note: Here you can see all files uploaded by you only.</i></h3></center>
<br>
<br>
<center>
<%
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
%>
<table border="2">
  <tr>
   <th style="width: 20%">Z ID</th>
   <th style="width: 20%">First Name</th>
   <th style="width: 20%">Last Name</th>
   <th style="width: 20%">Mail ID</th>
   ...
   <th class="text-center">Edit Form</th>
   </tr>
<%
  Class.forName("com.mysql.jdbc.Driver");
  con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dmsqms","root","");
   String zid = request.getParameter("zid");
   String sql = "select * from dmsfiles where zid= '"+zid+"'";
   ps = con.prepareStatement(sql);
   rs = ps.executeQuery();
   while(rs.next()){
    %>
   <tr>
   <td><%=rs.getString(1)%></td>              
   <td><%=rs.getString(2)%></td>           
   <td><%=rs.getString(3)%></td>   
   <td><%=rs.getString(4)%></td> 
   <td><%=rs.getString(5)%></td> 
   <td><%=rs.getString(6)%></td> 
   <td><%=rs.getString(7)%></td>
   <td><%=rs.getString(8)%></td>              
   ...
   <td><%=rs.getString(24)%></td>
   <td><a href="DownloadServletClass?fileName=<%=rs.getString(22)%>" class="btn btn-primary">Download</a></td>
   <td><a href="editnew.jsp?zid=<%=rs.getString("zid")%>&documentname=<%=rs.getString(9)%>" class="btn btn-warning">Edit</a></td>
 </tr>
<%
   }
%>    
</table><br>
<a href="home.jsp" class="btn btn-info">Home</a>
</center>
</body>

editnew. jsp

<body>
<br>
<div id="Registercontainer">
<div class="RegForm">    
<div id="back_glob">    
<div id="back_form">
<%
  try{
    String host = "jdbc:mysql://localhost:3306/dmsqms";
    Statement stat = null;
    ResultSet res = null;
    Connection conn = null;
    PreparedStatement stmt = null;
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(host,"root","");
 %>
 <form action="editprocess.jsp" method="post" enctype="multipart/form-data">
    <%
      stat = conn.createStatement();
      String docName = request.getParameter("documentname");
      String zid = request.getParameter("zid");
      String data = "select * from dmsfiles where zid = '"+zid+"' AND document_name = '"+docName+"'";
      res = stat.executeQuery(data);
      while(res.next()){
     %>
     
     <center><h2>Edit form</h2></center>
     <input type="hidden" name="id" value="<%=res.getString("zid") %>">
      <table width="400px" align="center" border="2">
       <tr>
         <td align="center" colspan="2">Form Details</td>
       </tr>
       <tr>
       <td>Z id</td>
       <td>
       <input type="text" name="zid" value='<%=res.getString(1)%>'/>
       </td>
       </tr>
       <tr>
       <td>First Name</td>
       <td>
       <input type="text" required="" name="firstname" value='<%=res.getString(2)%>'/>
        </td>
        </tr>
        <tr>
        <td>Last Name</td>
        <td>
        <input type="text" required="" name="lastname" value='<%=res.getString(3)%>'/>
        </td>
        </tr>
        
        ...
        
        <%
          }
        %>    
        <tr>
        <td></td>
        <td>
        <input type="hidden" value="update" name="update"/>
        <input type="submit" value="Update" class="btn btn-primary"/>
        </td>
        </tr>
        </table>
        </form>
        <br>
        <center><a href="home.jsp" class="btn btn-info">Home</a></center>
    </div>
    </div>  
    </div>
    </div>
    <%
        }  //try block close
        catch(Exception e){
           System.out.println(e);
        }   
%>
</body>

Процесс редактирования. jsp

<body>
<%
String z_id = request.getParameter("zid");
String first_Name = request.getParameter("firstname");
String last_Name = request.getParameter("lastname");
String mail_i_d = request.getParameter("mailid");
String d_iv = request.getParameter("division");

...

String iss_uer = request.getParameter("issuer");
String sta_tus = request.getParameter("status");
String file_Name = "";
String folder_Name = "allfiles";
String pa_th = folder_Name + File.separator + file_Name;
Timestamp add_ed_date = new Timestamp(System.currentTimeMillis()); 

if(request.getParameter("update") != null){
   // out.println("in");
   Connection con = null;
   PreparedStatement ps = null;
                
   try{
     Class.forName("com.mysql.jdbc.Driver");
     con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dmsqms","root","");
     String sql = "update dmsfiles set firstname=?,lastname=?,mailid=?,division=?,department=?,costcentercode=?,document_number=?,document_type=?,document_category=?,document_classification=?,authorised_by=?,fromdate=?,todate=?,document_level=?,document_general=?,serial_number=?,revision_number=?,issuer=?,status=?,filename=?,path=?,added_date=? where document_name='"+doc_Name+"'"; 
      ps = con.prepareStatement(sql);
      // ps.setString(1,z_id);
      ps.setString(1,first_Name);
      ps.setString(2,last_Name);
      ps.setString(3,mail_i_d);
      ps.setString(4,d_iv);
      ps.setString(5,de_pt);
      
      ...
       
      ps.setString(19,iss_uer);
      ps.setString(20,sta_tus);
      ps.setString(21,file_Name);
      ps.setString(22,pa_th);
      ps.setTimestamp(23, add_ed_date);
      int i = ps.executeUpdate();
      con.commit();
      if(i > 0)
      {
       out.println("alert('Record Updated Successfully');");
      }
      else
      {
       out.println("alert('There is a problem in updating Record.');");
      }
      }
      catch(SQLException sql)
      {
        sql.printStackTrace();
      }
      }
%>
<a href="home.jsp" class="btn btn-info">Home</a>
</body>

Произошло исключение:

20-Feb-2020 11:12:43.827 SEVERE [http-nio-8084-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [jsp] in context with path [/DMS2] threw exception [An exception occurred processing JSP page /searchResult.jsp at line 97

94:<td align="center"><c:out value="${row.added_date}"/></td>
95:                            
96:<td align="center"><a href="DownloadServletClass?fileName=${row.fileName}" class="btn btn-primary">Download</a></td>
97:<td align="center"><a href="editnew.jsp?zid=<%=rs.getString("zid")%>&documentname=<%=rs.getString(9)%>" class="btn btn-warning">Edit</a></td>
98:                            
99: 
100: 


Stacktrace:] with root cause
 java.lang.NullPointerException
	at org.apache.jsp.searchResult_jsp._jspService(searchResult_jsp.java:371)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

searchResult. jsp

<form name="empForm" method="post">
<div>
<table border="2" style="width:100%" cellpadding="15" cellspacing="3">
 <tr>
  <th>Z ID</th>
  <th>First Name</th>
  <th>Last Name</th>
  <th>Mail ID</th>
  <th>Division</th>
  <th>Department</th>
  <th>Cost Center Code</th>
  <th>Document No.</th>
  <th>Document Name</th>
  <th>Document Type</th>
  <th>Document Category</th>
  ...                      
  <th>Status</th>
  <th>File Name</th>
  <th>Added Date</th>
  <th>Download</th>
  <th>Edit Form</th>
  </tr>
  <tbody>
<%
   Connection con = null;
   PreparedStatement ps = null;
   ResultSet rs = null;
 %>
 <sql:query var="empData" dataSource="${emp}">
   SELECT * FROM dmsfiles emp where 
   emp.document_number like '%<%=request.getParameter("documentnumber")%>%' and
   emp.document_name like '%<%=request.getParameter("documentname")%>%' and
   emp.document_type like '%<%=request.getParameter("Document_Type")%>%' and
   emp.document_category like '%<%=request.getParameter("Document_Category")%>%' and
   emp.document_classification like '%<%=request.getParameter("Document_Classification")%>%'
</sql:query>
<c:forEach var="row" items="${empData.rows}">
  <tr>
   <td align="center"><c:out value="${row.zid}"/></td>
   <td align="center"><c:out value="${row.firstname}"/></td>
   <td align="center"><c:out value="${row.lastname}"/></td>
   <td align="center"><c:out value="${row.mailid}"/></td>
   <td align="center"><c:out value="${row.division}"/></td>
   ...
   <td align="center"><c:out value="${row.revision_number}"/></td>
   <td align="center"><c:out value="${row.issuer}"/></td>
   <td align="center"><c:out value="${row.status}"/></td>
   <td align="center"><c:out value="${row.fileName}"/></td>
   <td align="center"><c:out value="${row.added_date}"/></td>
   <td align="center"><a href="DownloadServletClass?fileName=${row.fileName}" class="btn btn-primary">Download</a></td>
   <td align="center"><a href="editnew.jsp?zid=${row.zid}&document_name=${row.document_name}" class="btn btn-warning">Edit</a></td>
   </tr>
   </c:forEach>
   </tbody>
   </table>  
   </div>    
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...