[英]How to update file in database using jsp?
我在數據庫data_table中有一個文件名為'a.txt'的文件,為:
doc_id filename
321 a.txt
Table('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();
%>
更新.java
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* 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("</pre>");
}
request.setAttribute("Message", msg);
// forwards to the message page
getServletContext().getRequestDispatcher("/updatedetails.jsp").forward(request, response);
out.println("</body> </html>");
}
如何更新數據庫中的當前數據?
您需要檢查用戶是否在update-process.jsp
selected
其他文件,如下所示:
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.