How to insert the dynamic added row values into the database using JDBC Servlets

夙愿已清 提交于 2021-02-04 21:40:37

问题


Here is my jsp code, am adding and deleting the rows dynamically using javascript,but while inserting the details into the database mysql,it will insert only 1 row..How to add the dynamically added row values into the database using servlets.. Here is my code

<html>
<head>
<title> Timeline Sheet</title>
 <SCRIPT language="javascript">
 $('form').change(function(){
    $('form').submit();
    });
    function validLogin(){
      if (document.form.eid.value == ""){
             alert ( "Please enter Employee Id." );
              document.form.eid.focus();
              return false;
     }
    if (document.form.ename.value == ""){
             alert ( "Please enter Employee Name." );
             document.form.ename.focus();
            return false;
     }
     alert ( "Inserted Successfully" );
     return true;
}

    function addRow(tableID) {

        var table = document.getElementById(tableID);

       // rowCount = table.rows.length;
        var row = table.insertRow(1);

        var colCount = table.rows[2].cells.length;

        for(var i=0; i<colCount; i++) {

            var newcell = row.insertCell(i);

            newcell.innerHTML = table.rows[2].cells[i].innerHTML;
            //alert(newcell.childNodes);
            switch(newcell.childNodes[0].type) {
                case "text":
                        newcell.childNodes[0].value = 0;
                        break;
                case "checkbox":
                        newcell.childNodes[0].checked = false;
                        break;
                case "select-one":
                        newcell.childNodes[0].selectedIndex = 0;
                        break;
                case "value":
                    newcell.childNodes[0].value=0;
            }
        }
    }

    function deleteRow(tableID) {
        try {
        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;

        for(var i=1; i<rowCount; i++) {
            var row = table.rows[i];
            var chkbox = row.cells[0].childNodes[0];
            if(null != chkbox && true == chkbox.checked) {
                if(rowCount <= 3) {
                    alert("Cannot delete all the rows.");
                    break;
                }
                table.deleteRow(i);
                rowCount--;
                i--;
            }


        }
        }catch(e) {
            alert(e);
        }
    }

    function getColumnCount()
    {
        return document.getElementById('dataTable').getElementsByTagName('tr')       [1].getElementsByTagName('td').length;         
    }

    function getRowCount()
    {
        return document.getElementById('dataTable').rows.length;
    }

    function doAdd(ths)
    {
        //alert(ths.parentNode.cellIndex);
        //alert(getColumnCount());
        var lastCol = getColumnCount()-1;
        var lastRow = getRowCount()-1;
        //for Column Sum
         var table = document.getElementById("dataTable");
        var row = table.rows[ths.parentNode.parentNode.rowIndex];
        var colSum=0;
        for(var i=4;i<lastCol;i++)
            colSum=eval(colSum) + eval(row.cells[i].childNodes[0].value);
        row.cells[lastCol].innerHTML = colSum;

        //for Row Sum
        var cIndex = ths.parentNode.cellIndex;
        //alert(cIndex);
        var rowSum = 0;
        for(var i=1;i<lastRow;i++)
            rowSum = eval(rowSum) +   parseInt(table.rows[i].cells[cIndex].childNodes[0].value);
        table.rows[lastRow].cells[cIndex].innerHTML = rowSum;
        //grand Total
        var finSum = 0;

        for(var i=1;i<lastRow;i++)
            finSum = eval(finSum) + parseInt(table.rows[i].cells[lastCol].innerHTML);

        table.rows[lastRow].cells[lastCol].innerHTML = finSum;


    }


</SCRIPT>

 </head>
 <body>

<center> <b> <i>SAMPLE TIMELINE SHEET </b> </i> </center>

<br>
 <br>

 <form name="form" action="LoginServlet" method="post" onsubmit="return validLogin();">
 Employee ID:<input type="text" name="eid"><br><br>
 Employee Name:<input type="text" name="ename"><br><br>
 From Date<input type="date"  name="fromDate" />
 To Date:<input type="date" name="todate">
 <br>
<br>
 <br>

 <table id="dataTable" border="2"  cell padding="1" cell spacing="1">


<tr>
<th style="background-color:white"></th>
    <th>Project</th>
     <th>Reports</th>
<th>Activity</th>
<th > Monday </th>
<th> Tuesday </th>
<th> Wednesday</th>
<th> Thursday </th>
<th> Friday </th>
<th> Saturday </th>
<th> Sunday </th>
<th>No. Of Hrs</th>

  </tr>

   <tr>
<td><INPUT type="checkbox" name="chk"/></td>
     <td><select name="project">
    <option value="A">A</option>
    <option value="B">B</option>

    </select></td>
<td><select name="reports">
    <option value="Resource Pyramid">Resource Pyramid</option>
    <option value="Migration">Migration</option>
    <option value="Timesheet Form">Timesheet Form</option>
    <option value="Timesheet Report">Timesheet Report</option>
    </select></td>
<td> <select name="activity">
    <option value="Development">Development</option>
    <option value="Testing">Testing</option>
    <option value="Research">Research</option>
    <option value="Data Upload">Data Upload</option>
    <option value="Design Review">Design Review</option>
    <option value="Documentation">Documentation</option>
    <option value="Leave">Leave</option>
    <option value="Holiday">Holiday</option>
    <option value="Pre Sales">Pre Sales</option>
    <option value="Installation">Installation</option>
    <option value="Miscellaneous">Miscellaneous</option>
    <option value="Back Up">Back Up</option>
    <option value="Migration">Migration</option>
    <option value="Defect Fixing">Defect Fixing</option>
    </select></td>
<td><input type="number"  name="mon" value="0" onchange="doAdd(this)"></td>
    <td><input type="number" name="tue" value="0" onchange="doAdd(this)"></td>
    <td><input type="number" name="wed" value="0" onchange="doAdd(this)"></td>
    <td><input type="number" name="thur" value="0" onchange="doAdd(this)"></td>
    <td><input type="number" name="fri" value="0" onchange="doAdd(this)"></td>
     <td><input type="number" name="sat" value="0" onchange="doAdd(this)"></td>
    <td><input type="number" name="sun" value="0" onchange="doAdd(this)"></td>
    <td>0</td>
</tr>
     </table>

   <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" name="addrow" />
   <INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />
   <input type="button" name="save" value="Save">
   <input type="Submit" name="submit" value="Submit" >

   </form>
   </body>
   </html>

And My Servlet Code is:

 public class LoginServlet extends HttpServlet {

   public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub

      if (request.getParameter("submit") != null) {



        // Invoke FirstServlet's job here.

        response.setContentType("text/html");
        String id=request.getParameter("eid");
        String name=request.getParameter("ename");

        String fromdate=request.getParameter("fromdate");
        String todate=request.getParameter("todate");
        String project=request.getParameter("project");
        String reports=request.getParameter("reports");
        String activity=request.getParameter("activity");
        String mon=request.getParameter("mon");
        String tue=request.getParameter("tue");
        String wed=request.getParameter("wed");
        String thur=request.getParameter("thur");
        String fri=request.getParameter("fri");
        String sat=request.getParameter("sat");
        String sun=request.getParameter("sun"); 

        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con =    DriverManager.getConnection("jdbc:mysql://localhost:3306/timeline","root", "root");
            String stringDate ="01-01-2012 ";
            String stringDate1 ="02-01-2012 ";
            SimpleDateFormat sdf= new SimpleDateFormat("mm-dd-yyyy");
            SimpleDateFormat sdf1= new SimpleDateFormat("mm-dd-yyyy");
            java.util.Date uDate = sdf.parse(stringDate);
            java.util.Date uDate1 = sdf1.parse(stringDate1);
            java.sql.Date sqlDate = new java.sql.Date(uDate.getDate());
            java.sql.Date sqlDate1 = new java.sql.Date(uDate1.getDate());
            String sql="insert into employeeform(id,name,fromdate,todate,project,reports,activity,mon,tue,wed,thur,fri,sat,sun)value(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement stmt=con.prepareStatement(sql);

            stmt.setString(1, id);
            stmt.setString(2,name);
            stmt.setString(3,fromdate);
            stmt.setString(4,todate);
            stmt.setString(5,project);
            stmt.setString(6,reports);
            stmt.setString(7, activity);
            stmt.setString(8,mon);
            stmt.setString(9,tue);
            stmt.setString(10,wed);
            stmt.setString(11, thur);
            stmt.setString(12, fri);
            stmt.setString(13,sat);
            stmt.setString(14,sun);
            stmt.executeUpdate();
            System.out.println("inserted successfully");

            response.sendRedirect("success.jsp"); 

        }
        catch(Exception e)
        {
            System.out.println(e);
            response.sendRedirect("error.jsp"); 



        }


    } else if (request.getParameter("save") != null) {
        // Invoke SecondServlet's job here.
        response.setContentType("text/html");
        String id=request.getParameter("eid");
        String name=request.getParameter("ename");
        String fromdate=request.getParameter("fromdate");
        String todate=request.getParameter("todate");
        String project=request.getParameter("project");
        String reports=request.getParameter("reports");
        String activity=request.getParameter("activity");
        String mon=request.getParameter("mon");
        String tue=request.getParameter("tue");
        String wed=request.getParameter("wed");
        String thur=request.getParameter("thur");
        String fri=request.getParameter("fri");
        String sat=request.getParameter("sat");
        String sun=request.getParameter("sun");
        String msg=null;
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/timeline","root", "root");
            String sql="insert into partialentered(id,name,fromdate,todate,project,reports,activity,mon,tue,wed,thur,fri,sat,sun)value('"+id+"','"+name+"','"+fromdate+"','"+todate+"','"+project+"','"+reports+"','"+activity+"','"+mon+"','"+tue+"','"+wed+"','"+thur+"','"+fri+"','"+sat+"','"+sun+"')";
            Statement stmt=con.createStatement();
            int rs=stmt.executeUpdate(sql);
            System.out.println("inserted successfully");


        }
        catch(Exception e)
        {
            System.out.println(e);
        }



    }
}

}

While submitting the form it tells inserted successfully,but it stores only 1 row details.Please help me how can I change this servlet code such that i can insert the dynamic add row values also into the database.

Thanks in advance.

U Can view the output with the jfiddle: http://jsfiddle.net/UnuaX/ Where when I Use Add row Button and insert the values to the newly added row,it will not insert those details to the database.


回答1:


You need to bind an event listener to submit the form data on whatever action you want the database to update on. for example, if on change of some input form, use jquery:

$('form').change(function(){
   $('form').submit();
});



回答2:


Try this :

public class LoginServlet extends HttpServlet {

   public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub

          String id1="",name1="",fromdate1="";

            String id[]=request.getParameterValues("eid");
            String name[]=request.getParameterValues("ename");
            String fromdate[]=request.getParameterValues("fromdate");


    try{
          Class.forName("com.mysql.jdbc.Driver");
        Connection con =  DriverManager.getConnection("jdbc:mysql://localhost:3306/timeline","root", "root");
         Statement st=null;
         st=con.createStatement();
        for (int i=0;i<id.length;i++)
         {
            id1=id[i];
            name1=name[i];
            fromdate1=fromdate[i];

          String sql="insert into partialentered(id,name,fromdate)values('"+id1+"','"+name1+"','"+fromdate1+"')";

                int rs=stmt.executeUpdate(sql);
               }
        con.close();
    }catch(Exception e){
      e.printStackTrace();
    }
   }
}   


来源:https://stackoverflow.com/questions/23056427/how-to-insert-the-dynamic-added-row-values-into-the-database-using-jdbc-servlets

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!