SQL Обновить запрос - пытается обновить sql запись - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь обновить SQL запись таблицы. Я написал программу, используя java для загрузки файла (ов) (с любым расширением) в таблицу базы данных SQL, и во время хранения файла я сохранил путь к файлу в таблице SQL. Эти загруженные файлы хранятся в папке «allfiles» в локальной системе, а в столбце «Путь к таблице» SQL путь к файлу отображается как «allfiles \». Теперь я также написал программу для обновления этой записи "update. jsp", но запрос на обновление не обновляет запись SQL для этого идентификатора. Пожалуйста, предложите мне, где я ошибаюсь. Ниже приведен код. Ошибка не возникла.

Короче говоря: я хочу, чтобы когда пользователь обновлял какую-либо запись, пользователь нажимал кнопку «Редактировать», и затем открывалась страница jsp со значениями, извлеченными, и если пользователь также хочет изменить файл, то он / она выберет файл из локальной системы и нажмет кнопку «обновить», после чего запись будет обновлена ​​с изменениями, а новый выбранный файл должен быть сохранен в SQL таблице.

filelist. jsp получить все записи из таблицы базы данных. .

filelist. jsp

<tr>
<th style="width: 20%">File ID</th>
<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 style="width: 20%">Division</th>
<th style="width: 20%">Department</th>
<th style="width: 20%">Cost Center Code</th>
<th style="width: 20%">Document No.</th>
<th style="width: 20%">Document Name</th>
<th style="width: 20%">Document Type</th>
<th style="width: 20%">Document Category</th>
<th style="width: 20%">Document Classification</th>
<th style="width: 20%">Authorised By</th>
<th style="width: 20%">Validity - From Date</th>
<th style="width: 20%">Validity - To Date</th>
<th style="width: 20%">Document Level</th>
<th style="width: 20%">Document General(F31151)</th>
<th style="width: 20%">Serial No.</th>
<th style="width: 20%">Revision No.</th>
<th style="width: 20%">Issuer</th>
<th style="width: 20%">Status</th>
<th style="width: 20%">File Name</th>
<th style="width: 20%">File Path</th>
<th style="width: 20%">Added Date</th>
<th style="width: 20%">Download</th>
<th class="text-center">Action</th>
<th style="width: 20%">Delete File</th>
</tr>
<%
  Connection con = null;
  PreparedStatement ps = null;
  ResultSet rs = null;
  String id = request.getParameter("id");
  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()){
  //String id = rs.getString("id");
%>
<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(9)%></td>
<td><%=rs.getString(10)%></td>          
<td><%=rs.getString(11)%></td> 
<td><%=rs.getString(12)%></td>           
<td><%=rs.getString(13)%></td>
<td><%=rs.getString(14)%></td>
<td><%=rs.getString(15)%></td>
<td><%=rs.getString(16)%></td>
<td><%=rs.getString(17)%></td>
<td><%=rs.getString(18)%></td>
<td><%=rs.getString(19)%></td>
<td><%=rs.getString(20)%></td>
<td><%=rs.getString(21)%></td>
<td><%=rs.getString(22)%></td>
<td><%=rs.getString(23)%></td>
<td><%=rs.getString(24)%></td>
<td><%=rs.getString(25)%></td>        
<td><a href="DownloadServletClass?fileName=<%=rs.getString(23)%>" class="btn btn-primary">Download</a></td>
<td><a href="update.jsp?id=<%=rs.getString("id")%>" class="btn btn-warning">Update</a></td>
<td><a href="deleteFile.jsp?id=<%=id%>" class="btn btn-danger" onclick="return confirm('Are you sure you want to delete this file?')">Delete</a></td>
</tr>
<%
}
 %>

Это обновление. jsp

<%@page import="java.io.File"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<!DOCTYPE html>
<html>
<head>
<%
try{
String id = request.getParameter("id");
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 de_pt = request.getParameter("department");
String cost_centercode = request.getParameter("costcentercode");
String doc_num = request.getParameter("documentnumber");     
String doc_Name = request.getParameter("documentname");
String doc_Type = request.getParameter("Document_Type");     String doc_Category = request.getParameter("Document_Category");   
String doc_classification = request.getParameter("Document_Classification");
String authorised_by = request.getParameter("authorisedby");
String from_date = request.getParameter("fromdate");
String to_date = request.getParameter("todate");
String document_level = request.getParameter("documentlevel");
String document_general = request.getParameter("documentgeneral");
String serial_number = request.getParameter("serialnumber");
String revision_number = request.getParameter("revisionnumber");
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());
            
Connection con;
PreparedStatement ps;
ResultSet rs;
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dmsqms","root","");
            
ps = con.prepareStatement("update dmsfiles set zid='"+z_id+"', firstname='"+first_Name+"',lastname='"+last_Name+"',mailid='"+mail_i_d+"',division='"+d_iv+"',department='"+de_pt+"',costcentercode='"+cost_centercode+"',document_number='"+doc_num+"',document_name='"+doc_Name+"',document_type='"+doc_Type+"',document_category='"+doc_Category+"',document_classification='"+doc_classification+"',authorised_by='"+authorised_by+"',fromdate='"+from_date+"',todate='"+to_date+"',document_level='"+document_level+"',document_general='"+document_general+"',serial_number='"+serial_number+"',revision_number='"+revision_number+"',issuer='"+iss_uer+"',status='"+sta_tus+"', filename='"+file_Name+"',path='"+pa_th+"',added_date='"+add_ed_date+"' where id = '"+id+"'");
            ps.setString(1, z_id);
            ps.setString(2,first_Name);
            ps.setString(3,last_Name);
            ps.setString(4,mail_i_d);
            ps.setString(5,d_iv);
            ps.setString(6,de_pt);
            ps.setString(7,cost_centercode);
            ps.setString(8,doc_num);
            ps.setString(9,doc_Name);
            ps.setString(10,doc_Type);
            ps.setString(11,doc_Category);
            ps.setString(12,doc_classification);
            ps.setString(13,authorised_by);
            ps.setString(14,from_date);
            ps.setString(15,to_date);
            ps.setString(16,document_level);
            ps.setString(17,document_general);
            ps.setString(18,serial_number);
            ps.setString(19,revision_number);
            ps.setString(20,iss_uer);
            ps.setString(21,sta_tus);
            ps.setString(22,file_Name);
            ps.setString(23,pa_th);
            ps.setTimestamp(24, add_ed_date);
            //ps.setString(25, id);
  
            ps.executeUpdate();
            con.close();   
%>
<script>
 alert("Record Updated!!");
</script> 
<%
}
catch(SQLException sql)
{
}
%>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<title>Update record Page</title>
<script type="text/javascript">
function showHide() {
  var checkbox = document.getElementById("chk");
  var hiddeninputs = document.getElementsByClassName("hidden");

   for (var i = 0; i != hiddeninputs.length; i++) {
      if (checkbox.checked) {
         hiddeninputs[i].style.display = "block";
      } else {
         hiddeninputs[i].style.display = "none";
      }
     }
   }
</script>
    </head>
    <body>
        
    <div id="Registercontainer">
    <div class="RegForm">    
    <div id="back_glob">    
    <div id="back_form">
        <form action="success.jsp" method="post" enctype="multipart/form-data">
            <%
                Connection con;
                PreparedStatement ps;
                ResultSet rs;
                
                Class.forName("com.mysql.jdbc.Driver");
                con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dmsqms","root","");
                
                String id = request.getParameter("id");
                ps = con.prepareStatement("select * from dmsfiles where id = ?");
                ps.setString(1, id);
                rs = ps.executeQuery();
                
                while(rs.next()){


                
            %>
        <input type="hidden" name="id" value="<%=rs.getString("id") %>"/>
        
            <center><h2>Update Record</h2></center>
            
            <table width="400px" align="center" border="2">
                <tr>
                    <td align="center" colspan="2">Form Details</td>
                </tr>
               <%-- <tr>
                    <td></td>
                    <td><input type="text" required="" name="zid" value="<%=rs.getString("id")%>"/></td>
                </tr> --%>
                <tr>
                    <td>Z id</td>
                    <td>
                        <input type="text" required="" name="zid" value="<%=rs.getString("zid")%>"/>
                    </td>
                </tr>
                <tr>
                    <td>First Name</td>
                    <td>
                        <input type="text" required="" name="firstname" value="<%=rs.getString("firstname")%>"/>
                        
                    </td>
                </tr>
                
                <tr>
                    <td>Last Name</td>
                    <td>
                        <input type="text" required="" name="lastname" value="<%=rs.getString("lastname")%>"/>
                        
                    </td>
                </tr>
                <tr>
                    <td>Mail id</td>
                    <td>
                        <input type="email" required="" name="mailid" value="<%=rs.getString("mailid")%>"/>
                    </td>
                </tr>
                <tr>
                    <td>Division</td>
                    <td>
                    <select name="division" id="wgtmsr">
                    <option value="<%=rs.getString("division")%>"><%=rs.getString("division")%></option>
                    <option value="B">B</option>
                    <option value="Z">Z</option>
                    <option value="I">I</option>
                    <option value="CF">CF</option>
                    <option value="P">P</option>
                    <option value="P">TT</option>
                    <option value="P">TC</option>
                    <option value="P">MA</option>
                    <option value="P">Z HYD</option>
                    <option value="P">CC</option>
                    <option value="P">CY</option>
                    </select>
                    </td>
                </tr>
                
               <tr>
                    <td>Department</td>
                    <td>
                    <select name="department" id="wgtmsr">
                    <option value="<%=rs.getString("department")%>"><%=rs.getString("department")%></option>
                    <option value="IT">IT</option>
                    <option value="Finance">Finance</option>
                    <option value="Logistics">Logistics</option>
                    <option value="Design">Design</option>
                    <option value="Purchase">Purchase</option>
                    <option value="Sales">Sales</option>
                    <option value="Material Management">Material Management</option>
                    
                    </select>
                    </td>
                </tr>
                
                <tr>
                    <td>Cost Center Code</td>
                    <td>
                    <select name="costcentercode" id="wgtmsr">
                    <option value="<%=rs.getString("costcentercode")%>"><%=rs.getString("costcentercode")%></option>
                    <option value="100115">100115</option>
                    <option value="100138">100138</option>
                    <option value="100630">100630</option>
                    <option value="100812">100812</option>
                    <option value="100823">100823</option>
                    <option value="500904">500904</option>
                    <option value="500907">500907</option>
                    <option value="700415">700415</option>
                    
                    
                    </select>
                    </td>
                </tr>
                <tr>
                    <td>Document Number</td>
                    <td>
                        <input type="text" required="" name="documentnumber" value="<%=rs.getString("document_number")%>"/>
                    </td>
                </tr>
                
                <tr>
                    <td>Document Name</td>
                    <td>
                        <input type="text" required="" name="documentname" value="<%=rs.getString("document_name")%>"/>
                    </td>
                </tr>
                
                <tr>
                    <td>Document Type</td>
                    <td>
                    <select name="Document_Type" id="wgtmsr">
                    <option value="<%=rs.getString("document_type")%>"><%=rs.getString("document_type")%></option>
                    <option value="Agreement">Agreement</option>
                    <option value="Contract">Contract</option>
                    <option value="PO">PO</option>
                    <option value="Invoice">Invoice</option>
                    <option value="COA">COA</option>
                    <option value="Lease Deed">Lease Deed</option>
                    <option value="AMC">AMC</option>
                    <option value="Direct Material">Direct Material</option>
                    <option value="Indirect Material/Services">Indirect Material/Services</option>
                    
                    </select>
                    </td>
                </tr>
                <br><br>
                <tr>
                    <td>Document Category</td>
                    <td>
                    <select name="Document_Category" id="wgtmsr">
                    <option value="<%=rs.getString("document_category")%>"><%=rs.getString("document_category")%></option>    
                    <option value="Customer">Customer</option>
                    <option value="Vendor">Vendor</option>
                    <option value="Internal">Internal</option>
                    
                    </select>
                    </td>
                
                </tr>
                <tr>
                    <td>Document Classification</td>
                    <td>
                        <select name="Document_Classification" id="wgtmsr">
                        <option value="<%=rs.getString("document_classification")%>"><%=rs.getString("document_classification")%></option>
                        <option value="Public">Public</option>
                        <option value="Internal">Internal</option>
                        <option value="ZF Confidential">ZF Confidential</option>
                        <option value="ZF Strictly Confidential">ZF Strictly Confidential</option>
                    </select>
                    </td>
                
                </tr>
                <br><br>
                
                <tr>
                    <td>Authorised By</td>
                    <td>
                        <select name="authorisedby" id="wgtmsr">
                        <option value="<%=rs.getString("authorised_by")%>"><%=rs.getString("authorised_by")%></option>
                        <option value="Soma Ghosh">Soma Ghosh</option>
                        <option value="KV Suresh">KV Suresh</option>
                        <option value="Raghavendra Deolankar">Raghavendra Deolankar</option>
                        <option value="Shriram Aparnnaa">Shriram Aparnnaa</option>
                    </select>
                    </td>
                
                </tr>
                
                <tr>
                    <td>Validity - From date</td>
                    <td>
                        <input type="date" required="" name="fromdate" value="<%=rs.getString("fromdate")%>"/>
                    </td>
                </tr>
                <tr>
                    <td>Validity - To Date</td>
                    <td>
                        <input type="date" required="" name="todate" value="<%=rs.getString("todate")%>"/>
                    </td>
                </tr>
                
                
                
                <!–– Code for QMS start   ––>
                
                <tr>
                    <td><label for="chk">QMS</label></td>
                    <td>
                        <input type="checkbox" name="chk" id="chk" value="check" onclick="showHide()"/>
                        
                    </td>
                </tr>
                
                <tr>
                    <td><label class="hidden">Document Level(F31151)</label></td>
                    <td>
                        
                        <select name="documentlevel" class="hidden" id="wgtmsr">
                        <option value="<%=rs.getString("document_level")%>"><%=rs.getString("document_level")%></option>
                        <option value="0: QMM">0: QMM</option>
                        <option value="1: Business-Process">1: Business-Process</option>
                        <option value="2: Process & Descriptions">2: Process & Descriptions</option>
                        <option value="3: Work Instructions">Work Instructions</option>
                        <option value="4: Checklist & Form">Checklist & Form</option>
                        </select>
                    </td>
                </tr>
                
                <tr>
                    <td><label class="hidden">Document 00 General</label></td>
                    <td>
                        
                        <select name="documentgeneral" class="hidden" id="wgtmsr">
                        <option value="<%=rs.getString("document_general")%>"><%=rs.getString("document_general")%></option>
                        <option value="00 General">00 General</option>
                        <option value="01 SDP Strategy Development Process">01 SDP Strategy Development Process</option>
                        <option value="02 Sales & Application Process">02 Sales & Application Process</option>
                        <option value="03 PDP Product Development Process">03 PDP Product Development Process</option>
                        <option value="04 PP Purchasing process">04 PP Purchasing process</option>
                        <option value="05 MP Maintenance Process">05 MP Maintenance Process</option>
                        <option value="06 Manufacturing & Delivery Process">06 Manufacturing & Delivery Process</option>
                        </select>
                    </td>
                </tr>
                
                <tr>
                    <td><label class="hidden">Serial Number</label></td>
                    <td>
                        <input type="text" name="serialnumber" class="hidden" value="<%=rs.getString("serial_number")%>"/>
                    </td>
                </tr>
                
                <tr>
                    <td><label class="hidden">Revision No.</label></td>
                    <td >
                        
                        <select name="revisionnumber" class="hidden" id="wgtmsr">
                        <option value="<%=rs.getString("revision_number")%>"><%=rs.getString("revision_number")%></option>
                        <option value="00">00</option>
                        <option value="01">01</option>
                        <option value="02">02</option>
                        <option value="03">03</option>
                        <option value="04">04</option>
                        <option value="05">05</option>
                        <option value="06">06</option>
                        <option value="07">07</option>
                        <option value="08">08</option>
                        <option value="09">09</option>
                        <option value="10">10</option>
                        <option value="11">11</option>
                        <option value="12">12</option>
                        <option value="13">13</option>
                        <option value="14">14</option>
                        <option value="15">15</option>
                        </select>
                    </td>
                </tr>
                
                
                
                <tr>
                    <td><label class="hidden">Issuer</label></td>
                    <td>
                        <input type="text" name="issuer" class="hidden" value="<%=rs.getString("issuer")%>"/>
                    </td>
                </tr>
                
                <tr>
                    <td><label class="hidden">Status</label></td>
                    <td>
                        
                        <select name="status" class="hidden" id="wgtmsr">
                        <option value="<%=rs.getString("status")%>"><%=rs.getString("status")%></option>
                        <option value="Public">Reserved</option>
                        <option value="Team">Implemented</option>
                        
                        </select>
                    </td>
                </tr>
  
                
                <!–– Code for QMS end   ––>
                <tr>
                    <td>Select File</td>
                    <td>
                        <input type="file" name="fileName" multiple="multiple" value="<%=rs.getString("fileName")%>"/>
                        <span> <%=rs.getString("filename")%> </span>
                    </td>
                </tr>
                
              <%  
                  }
              %>
                <tr>
                    <td></td>
                    <td>
                        <input type="submit" value="submit" name="submit" id="submit" class="btn btn-success"/>
                    </td>
                </tr>
                
                
            </table>
                <p><a href="home.jsp" class="btn btn-info">Back</a></p>
        </form>
    </div>
    </div>
    </div>
    </body>
</html>

This is my Database Screenshot

Ответы [ 3 ]

0 голосов
/ 22 апреля 2020

В вашем коде в настоящее время много ошибок, я не могу написать все в комментариях, поэтому я публикую его как ответ. Ниже приведены некоторые ошибки, которые я видел в вашем коде:

1.) Вы передаете все значения в запросе напрямую, т.е.: "update dmsfiles set zid='"+z_id+"', firstname='"+firstname..., а также вы должны использовать ps.setString(..) для всех значений? почему?

2.) если ваш код обновления находится на той же странице, где находится ваша форма? тогда, конечно, если вы введете <form action="success.jsp">, тогда ваша форма будет перенаправлена ​​на эту страницу без отправки. Вместо этого введите код обновления в success.jsp или используйте response.sendRedirect().. для перенаправления на success.jsp после обновления.

3 .) Вы закомментировали <input type="text" required="" name="zid" value="<%=rs.getString("id")%>"/> в своем <form>, пожалуйста, раскомментируйте это и измените name="id", чтобы получить требуемый id в своем коде обновления.

4.) Пожалуйста, напечатайте исключение внутри блока catch, то есть: catch(SQLException sql){sql.printStackTrace();} чтобы узнать, есть ли в вашем запросе ошибка.

0 голосов
/ 23 апреля 2020
try {    
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dmsqms","root","");

    ps = con.prepareStatement("update dmsfiles set zid=?, firstname=?,lastname=?,mailid=?,division=?,department=?,costcentercode=?,document_number=?,document_name=?,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 id = ?");

                ps.setString(1, z_id);
                ps.setString(2,first_Name);
                ps.setString(3,last_Name);
                ps.setString(4,mail_i_d);
                ps.setString(5,d_iv);
                ps.setString(6,de_pt);
                ps.setString(7,cost_centercode);
                ps.setString(8,doc_num);
                ps.setString(9,doc_Name);
                ps.setString(10,doc_Type);
                ps.setString(11,doc_Category);
                ps.setString(12,doc_classification);
                ps.setString(13,authorised_by);
                ps.setString(14,from_date);
                ps.setString(15,to_date);
                ps.setString(16,document_level);
                ps.setString(17,document_general);
                ps.setString(18,serial_number);
                ps.setString(19,revision_number);
                ps.setString(20,iss_uer);
                ps.setString(21,sta_tus);
                ps.setString(22,file_Name);
                ps.setString(23,pa_th);
                ps.setTimestamp(24, add_ed_date);
                ps.setString(25, id); //<- uncommented this

                ps.executeUpdate();

                ps.close(); //<- added this
                con.close();   
} catch (Exception e) {
            out.println("Error: " + e.toString()); // If error occured, you can see the error message in detail
        } 
0 голосов
/ 18 апреля 2020

Вероятно, это связано с:

  ps.setString(25, id);

В подготовленном операторе определено 24 свойства, которые можно передать. Тем не менее, вы передаете 25 объектов недвижимости. Кроме того, вы должны рассмотреть только обновление обязательных необходимых полей вместо обновления всех параметров, определенных в таблице.

Ваше утверждение выглядит так:

  ps = con.prepareStatement("update dmsfiles set zid=?, firstname=?,lastname=?,mailid=?,division=?,department=?,costcentercode=?,document_number=?,document_name=?,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 id = '"+id+"'");

Просто замените,

where id = '"+id+"'")

с,

where id = ?")
...