如何使用JDBC Servlet将动态添加的行值插入数据库 [英] How to insert the dynamic added row values into the database using JDBC Servlets

查看:43
本文介绍了如何使用JDBC Servlet将动态添加的行值插入数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的jsp代码,正在使用javascript动态添加和删除行,但是在将详细信息插入数据库mysql时,它只会插入1行..如何使用servlet将动态添加的行值添加到数据库中.. 这是我的代码

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>

我的Servlet代码是:

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);
        }



    }
}

}

虽然提交的表单告诉我们插入成功,但是它仅存储1行详细信息.请帮助我如何更改此servlet代码,以便将动态添加行值也插入数据库中.

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.

谢谢.

U可以使用jfiddle查看输出: http://jsfiddle.net/UnuaX/ 当我使用添加行"按钮并将值插入到新添加的行中时,它不会将那些详细信息插入数据库中.

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.

推荐答案

您需要绑定事件侦听器,以提交有关数据库要更新的任何操作的表单数据.例如,如果更改某些输入形式,则使用jquery:

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();
});

这篇关于如何使用JDBC Servlet将动态添加的行值插入数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆