我試圖在提交時在同一個數據庫中插入多行(每行都有很多字段),但無法這樣做。我成功地能夠插入單行,但是當它出現多行時,我卡住了。在eclipse中使用servlet jsp在同一數據庫表中插入多行
這是jsp頁面,您可以通過輸入來動態添加任意行。沒有單獨的提交按鈕爲每個行而不是單個提交按鈕來插入所有行。
1.>projmgrsuccessful.jsp
<form name="allocate-project-task" action="AddProjectTaskDAO" method="get" enctype="multipart/form-data">
<h4>Another popup</h4>
<input type="hidden" name="proj_emp_comt" value="">
<input type="hidden" name="pid" value="<c:out value="${pid}" />">
<label>Enter the no of employee involved in project</label>
<input type="text" id="textbox1" />
<input type="button" value="Add" id="add" />
<table border="1" id="pt-tabledata">
</table>
<center><input type="submit" name="alloc_time" value="Allocate"><a href="#" id="closea">Close</a></center>
</form>
<script>
$("#add").click(function() {
$('#pt-tabledata').append('<tr><td>Username</td><td>Work description</td> <td>Allocate time</td><td>Allocate work and time</td></tr>');
for (var i = 0; i < $("#textbox1").val(); i++) {
$newdiv2 = $('<tr id="pt-ip-row" style="display:block;"><td><select name="uname"><c:forEach items="${ual}" var="u"><option value="<c:out value="${u.uname}"></c:out>"><c:out value="${u.uname}"></c:out></option> </c:forEach> </select></td><td><textarea rows="5" cols="15" name="pdesc_emp"></textarea></td><td><input type="text" name="pestd_time_alloc" /></td><td></td><td><a href="#" id="close-pt-row" onclick="return hide();">Close</a></td> </tr>').after("#add");
$('#pt-tabledata').append($newdiv2);
}
});
</script>
這是Java代碼片斷在哪裏處理等連接到數據庫並將其插入到數據庫表中的數據。
2>AddProjectTaskDAO.java
package com.pms.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class AddProjectTaskDAO
*/
@WebServlet("/AddProjectTaskDAO")
public class AddProjectTaskDAO extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AddProjectTaskDAO() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
Connection conn=null;
String url="jdbc:mysql://localhost:3306/";
String dbName="projectmanagement";
String driver="com.mysql.jdbc.Driver";
String dbUsername="root";
String dbPassword="root";
try{
String Projid=" ";
String Projuname=" ";
String Projdesc_emp=" ";
String Projestd_time_alloc=" ";
String Projtask_emp_comment=" ";
String Pid[] = request.getParameterValues("pid");
String Uname[] = request.getParameterValues("uname");
String Pdesc_emp[] = request.getParameterValues("pdesc_emp");
String Pestd_time_alloc[] = request.getParameterValues("pestd_time_alloc");
String Projtask_emp_cmnt[] = request.getParameterValues("ptask_emp_cmnt");
//String Utype = request.getParameter("utype");
for(int i=0; i<100; i++){
Projid=Pid[i]+" "+ 1;
Projuname=Uname[i]+" "+ 1;
Projdesc_emp=Pdesc_emp[i]+" "+ 1;
Projestd_time_alloc=Pestd_time_alloc[i]+" "+ 1;
Projtask_emp_comment=Projtask_emp_cmnt[i]+" "+ 1;
}
Class.forName(driver);
conn = DriverManager.getConnection(url+dbName,dbUsername, dbPassword);
Statement st=conn.createStatement();
int i = st.executeUpdate("insert into projtaskallocate (pid,uname,ptdesc_emp,ptestd_time_alloc,ptask_emp_cmnt) values ('" +Projid+ "','" +Projuname+"','" +Projdesc_emp+ "','" +Projestd_time_alloc+ "','" +Projtask_emp_comment+ "')");
String msg=" ";
if(i!=0){
UserPMDAO dd = new UserPMDAO();
request.setAttribute("ual", dd.getUsers());
ProjectDAO pp = new ProjectDAO();
request.setAttribute("pal", pp.getProjects());
String nextJSP = "/projmgrsuccessful.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
dispatcher.forward(request,response);
}
else
{
msg="Failed to Add Project";
pw.print("<font size='6' color=blue>" + msg + "</font>");
}
pw.close();
//pst.close();
st.close();
conn.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
這裏的問題是,當我點擊提交按鈕僅第一行插入,但我的要求是插入的所有行。
請幫助,如果我錯了,請指導我。
SAN krish我加了這些聲明,但它無法正常工作。 – Atiq
san krish我得到NullPointer異常錯誤。 – Atiq
我得到了我收到NullPointerException的原因,因爲request.getParameterValues()無法獲取值。 這也可能是因爲我有動態創建的文本框。 請幫我瞭解如何從動態創建的文本框中獲取文本框的值。 – Atiq