Как обновить файл в базе данных с помощью jsp? - PullRequest
1 голос
/ 09 мая 2019

У меня есть файл в базе данных data_table с именем файла 'a.txt' как:

doc_id    filename

 321        a.txt

Определение таблицы ('data_table'):

doc_id   varchar(100) NOT NULL

filename varchar(100) NOT NULL

Я хочу обновить текущийфайл в базе данных, чтобы «b.txt», когда я нажимаю кнопку загрузки, в противном случае я не хочу, чтобы файл был обновлен, имя файла должно быть «a.txt»

В настоящее время, когда я нажимаю кнопку загрузки, он стираетзагруженное имя файла ('a.txt') и ничего не отображается.

База данных выглядит как:

doc_id   filename

321       

Мой ожидаемый вывод -

doc_id  filename

321     b.txt

updatedetails.jsp

<%

    String connectionURL = "jdbc:mysql://localhost:3306/doc_search";
    Statement stmt = null;
    Connection con = null;
    String docId=null;                        
    if(request.getParameter("doc_id")!=null && request.getParameter("doc_id")!="")
    {
        docId = request.getParameter("doc_id");

    }
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    con = DriverManager.getConnection(connectionURL, "root", "root");
    stmt = con.createStatement();                                           

    String qry = "select doc_id,doc_title,filename  from data_table where doc_id='"+docId+"'";
    ResultSet rst= stmt.executeQuery(qry);
    while(rst.next())
        {     
     %>
     <center>  <h1 class="header-w3ls" id="h1"> Update Document Details</h1></center>
     <form  id="form1" class="form-control" name="form1" action="update" enctype="multipart/form-data"    method="post"  >
        <div class="col-md-4 mb-3 form-group">
             <input type="hidden" name="doc_id" value="<%=rst.getString(1)%>">
        </div>
             <div class="col-md-4 mb-3 form-group">
                 <label for="validationDefault02">Document Title</label>       
                 <input type="text" class="form-control"  name="document_title" value="<%=rst.getString(2)%>" id="validationDefaultUsername" placeholder="Document Title " aria-describedby="inputGroupPrepend2" >
            </div>
            <div class="col-md-4 mb-3 form-group">
                <label for="validationDefaultUsername">Upload File </label>       
                <input type="file" class="form-control"  name="my_file_element"  aria-describedby="inputGroupPrepend2" >  
            </div>
        <div class="col-md-4 mb-3 form-group">

            <div class="col-md-4 mb-3">
                <center> <button class="btn btn-primary form-control" type="submit" name="Submit">Submit</button></center>
            </div>
        </div>
     </form>
            <%
               }
               con.close();                       
              %>

update.java

<code> protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
          response.setContentType("text/html");
        PrintWriter out = response.getWriter(); 

    String msg=null;
try{    


 String tYear=null;

   HttpSession session=request.getSession();
 Class.forName("com.mysql.jdbc.Driver").newInstance();


 String staffname = (String) session.getAttribute("username");     
 MultipartRequest multi =new MultipartRequest(request,"F:\\binsha\\JavaProject\\DOC_Register\\uploaded_files\\",100 1024);
 String docId=multi.getParameter("document_id");
 String documentTitle=multi.getParameter("document_title");
 String author=multi.getParameter("prepared_by");
String tReviewedby=multi.getParameter("reviewed_by");
String documentType=multi.getParameter("doc_type");
String tRemarks=multi.getParameter("remarks");
 String tDate=multi.getParameter("theDate2");    
 tYear = tDate.substring(6);

    PreparedStatement ps20= null;   

 Statement stmt = null;
 Connection con = null;
 ResultSet rst=null;   
  con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/doc_search", "root", "root");
 stmt = con.createStatement();

           Enumeration files = multi.getFileNames();
            String name=(String)files.nextElement();

            String filename=multi.getFilesystemName(name);
            System.out.println(filename);
            if(filename.equals(""))
            {

               String sql2="update data_table set doc_title=?,prepared_by=?,reviewed_by=?,doc_type=?,remarks=?,date=?,year=? where doc_id='"+docId+"'";

     ps20=con.prepareStatement(sql2);           
           ps20.setString(1, documentTitle);
            ps20.setString(2, author);
             ps20.setString(3,tReviewedby );
              ps20.setString(4,documentType );
               ps20.setString(5,tRemarks );
               ps20.setString(6,tDate );
               ps20.setString(7,tYear );                      
               ps20.executeUpdate(); 
}
            else{

               String sql1="update data_table set doc_title=?,prepared_by=?,reviewed_by=?,doc_type=?,remarks=?,date=?,year=?,filename=? where doc_id='"+docId+"'";

     ps20=con.prepareStatement(sql1);           
           ps20.setString(1, documentTitle);
            ps20.setString(2, author);
             ps20.setString(3,tReviewedby );
              ps20.setString(4,documentType );
               ps20.setString(5,tRemarks );
               ps20.setString(6,tDate );
               ps20.setString(7,tYear );
                    ps20.setString(8,filename );
               ps20.executeUpdate(); 
            }
        con.close(); 

}

catch(Exception e)
{
     out.println("<pre>");
    System.out.println(e);
    e.printStackTrace(out);
    out.println("
");} request.setAttribute (" Message ", msg); // перенаправляет на страницу сообщения getServletContext (). GetRequestDispatcher (" / updatedetails.jsp") .forward (запрос, ответ); out.println (" ");} *1024*

Как обновить текущие данные в базе данных?

1 Ответ

0 голосов
/ 09 мая 2019

Вам необходимо проверить, есть ли у пользователя selected другой файл или нет в вашем update-process.jsp, как показано ниже:

 PreparedStatement ps20=null;
String filename=request.getParameter("my_file_element");
//if filename doesn't have anything in it just update doc_title if required
if(filename.equals("")){
  String sql1="update data_table set doc_title=? where doc_id='"+docId+"'";    
  ps20=con.prepareStatement(sql1);
  ps20.setString(1, documentTitle);
  int row1=ps20.executeUpdate();  
  if (row1 > 0) {
      msg= "Updated Successfully";
      System.out.println(msg);
    }      

}else{
   //if there exist filename
  String sql2="update data_table set doc_title=?,filename=? where doc_id='"+docId+"'";
  ps20=con.prepareStatement(sql2);
  ps20.setString(1, documentTitle);
  ps20.setString(2, filename);
  int row2=ps20.executeUpdate();
   if (row2 > 0) {
     msg= "Updated Successfully";
     System.out.println(msg);
      }    
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...