如何实现Handsontable的增删改

上一篇讲的handsontable获取后台的数据并显示在excel表中,那么接下来就要实现基本的增删改操做

1.新增数据

HTML部分:

<div class="col-md-10 col-sm-10 col-xs-3" style="display: block" id="grade_div">
            <input type="button" id="gradeadd" value="新增" style="margin-bottom: 5px;margin-right: 5px" class="btn btn-success btn-sm" data-toggle="modal" data-target="#addGrade">
            <div id="grade"></div>
            <%--添加成绩的模态框--%>
            <div class="modal fade" id="addGrade" tabindex="-1" role="dialog" aria-labelledby="addGradeLabel">
                <div class="modal-dialog" role="document">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                            <h4 class="modal-title" id="myModalLabel">添加成绩信息</h4>
                        </div>
                        <div class="modal-body">
                            <form class="form-horizontal" action="/GradeInfo?method=AddScore" method="post" id="addgradeform">
                                <div class="form-group has-feedback">
                                    <label class="control-label col-sm-2" for="inputStuID">学号</label>
                                    <div class="col-sm-9">
                                        <input name="stuID" type="number" class="form-control" id="inputStuID" placeholder="学号" aria-describedby="inputStuIDStatus">
                                    </div>
                                </div>
                                <div class="form-group has-feedback">
                                    <label class="control-label col-sm-2" for="inputStuName">姓名</label>
                                    <div class="col-sm-9">
                                        <input name="stuName" type="text" class="form-control" id="inputStuName" placeholder="姓名" aria-describedby="inputStuNameStatus">
                                    </div>
                                </div>
                                <div class="form-group has-feedback">
                                    <label class="control-label col-sm-2" for="inputcourseID">课程编号</label>
                                    <div class="col-sm-9">
                                        <input name="courseID" type="text" class="form-control" id="inputcourseID" placeholder="课程编号" aria-describedby="inputcourseIDStatus">
                                    </div>
                                </div>
                                <div class="form-group has-feedback">
                                    <label class="control-label col-sm-2" for="inputcourseName">课程名称</label>
                                    <div class="col-sm-9">
                                        <input name="courseName" type="text" class="form-control" id="inputcourseName" placeholder="课程名称" aria-describedby="inputcourseNameStatus">
                                    </div>
                                </div>
                                <div class="form-group has-feedback">
                                    <label class="control-label col-sm-2" for="inputGrade">成绩</label>
                                    <div class="col-sm-9">
                                        <input name="Grade" type="number" class="form-control" id="inputGrade" placeholder="成绩" aria-describedby="inputGradeStatus">
                                    </div>
                                </div>
                                <div class="for-group">
                                    <input type="submit" value="保存" class="btn btn-primary" style="margin-left: 50px">
                                    <input type="button" value="关闭" class="btn btn-default" style="margin-left: 50px" data-dismiss="modal">
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>

运行效果:
在这里插入图片描述
controller:

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取请求的方法
        String method = request.getParameter("method");
        if("ScoreList".equalsIgnoreCase(method)){
            scoreList(request,response);
            //获取所有成绩的数据
        }else if ("AddScore".equalsIgnoreCase(method)){
            addScore(request,response);
            //登记成绩
        }else if ("DeleteScore".equalsIgnoreCase(method)){
            deleteScore(request,response);
        }else if ("UpdateScore".equalsIgnoreCase(method)){
            updateScore(request,response);
        }

    }
    private void addScore(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset:utf-8");

        String stuID1 = request.getParameter("stuID");
        Integer stuID = Integer.valueOf(stuID1).intValue();
        String stuName = new String(request.getParameter("stuName").getBytes("ISO-8859-1"),"utf-8");
        String courseID = request.getParameter("courseID");
        String courseName = new String(request.getParameter("courseName").getBytes("ISO-8859-1"),"utf-8");
        String Grade = request.getParameter("Grade");
        Integer courseGrade = Integer.valueOf(Grade).intValue();
        Grade grade = new Grade(stuID,stuName,courseID,courseName,courseGrade);
        if (stuID!=null&&stuName!=null&&courseID!=null&&courseName!=null&&courseGrade!=null){
            Connection conn = JdbcUtils.getConnection();
            PreparedStatement pre = null;
            ResultSet res = null;
            String sql = "INSERT INTO grade(stuID,stuName,courseID,courseName,courseGrade) VALUES(?,?,?,?,?)";
            try {
                pre = conn.prepareStatement(sql);
                pre.setInt(1,stuID);
                pre.setString(2,stuName);
                pre.setString(3,courseID);
                pre.setString(4,courseName);
                pre.setInt(5,courseGrade);
                pre.executeUpdate();
            }
            catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JdbcUtils.close(conn,pre,res);
            }
            request.getRequestDispatcher("WEB-INF/main.jsp").forward(request,response);
        }
    }

2.删除某一行:

//当要删除一或多个行时触发。
                beforeRemoveRow:function(index, amount){
                    if (confirm("确定删除该行吗")){
                        var rid = index,
                            dtArr = hot.getDataAtRow(rid),
                            dtId = dtArr[0],
                            st = {"stuID":dtId};
                        $.ajax({
                            type:"post",
                            url:"GradeInfo?method=DeleteScore",
                            data:st,
                            dataType:"text",
                            success:function (data) {
                                alert("删除成功!");
                            },
                            error:function () {
                                alert("删除失败!")
                            }
                        })
                    }
                    else {
                        return;
                    }
                }

controller

private void deleteScore(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        String stuID = request.getParameter("stuID");
        Connection connection = JdbcUtils.getConnection();
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "DELETE FROM grade WHERE stuID= '"+stuID+"'";
        System.out.println(sql);
        try {
            ps = connection.prepareStatement(sql);
            ps.executeUpdate(sql);
            JdbcUtils.close(connection,ps,rs);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

3.修改数据

afterChange:function (changes,source) {
                    if (changes!=null){
                        var row = changes[0][0];
                        var updata = {
                            "colName":changes[0][1],
                            "oValue":changes[0][2],
                            "nValue":changes[0][3],
                        };
                        if (changes[0][2] === changes[0][3]){
                            return;
                        }else {
                            // 修改后自动异步提交数据
                            $.ajax({
                                type:'post',
                                url:"GradeInfo?method=UpdateScore",
                                data:updata,
                                dataType:'text',
                                success:function (data) {
                                    alert("更新成功");
                                },
                                error:function () {
                                    alert("更新失败");
                                }
                            })
                        }
                    }
                },

controller

private void updateScore(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        String ovalue = request.getParameter("oValue");
        String nvalue = request.getParameter("nValue");
        String colname = request.getParameter("colName");

        Connection conn = JdbcUtils.getConnection();
        PreparedStatement pre = null;
        String sql = "UPDATE grade SET "+colname+" = '"+nvalue+"' WHERE "+colname+" = '"+ovalue+"'";
        System.out.println(sql);
        try {
            pre = conn.prepareStatement(sql);
            int res = pre.executeUpdate(sql);
            out.println(res);
            pre.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        request.getRequestDispatcher("WEB-INF/main.jsp").forward(request,response);
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现Python对MySQL数据库的增删操作,可以使用pymysql库。下面是具体的实现方法: 增加操作: 使用pymysql库连接到MySQL数据库,并执行插入操作。可以使用占位符的方式来防止SQL注入的问题。具体代码如下所示: ``` import pymysql def get_conn(): conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='test1') return conn def insert(sql, args): conn = get_conn() cur = conn.cursor() result = cur.execute(sql, args) print(result) conn.commit() cur.close() conn.close() if __name__ == '__main__': sql = 'INSERT INTO test_student_table VALUES(%s, %s, %s);' args = (2, 'wang', 13) insert(sql, args) ``` 删除操作: 同样使用pymysql库连接到MySQL数据库,并执行删除操作。可以使用占位符的方式传递参数,以避免SQL注入的问题。具体代码如下所示: ``` import pymysql def get_conn(): conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='test1') return conn def delete(sql, args): conn = get_conn() cur = conn.cursor() result = cur.execute(sql, args) print(result) conn.commit() cur.close() conn.close() if __name__ == '__main__': sql = 'DELETE FROM test_student_table WHERE id = %s;' args = (1,) delete(sql, args) ``` 更新操作: 同样使用pymysql库连接到MySQL数据库,并执行更新操作。可以使用占位符的方式传递参数,以避免SQL注入的问题。具体代码如下所示: ``` import pymysql def get_conn(): conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='test1') return conn def update(sql, args): conn = get_conn() cur = conn.cursor() result = cur.execute(sql, args) print(result) conn.commit() cur.close() conn.close() if __name__ == '__main__': sql = 'UPDATE test_student_table SET NAME=%s WHERE id = %s;' args = ('zhangsan', 1) update(sql, args) ``` 以上是使用Python实现MySQL的增删操作的方法。通过pymysql库连接到数据库,然后执行相应的SQL语句即可实现对数据库的操作。同时,使用占位符的方式传递参数可以防止SQL注入的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值