程序员的日常操作—修改多表数据

开发工具与关键技术:Visual Studio ASP.NET MVC

作者:刘剑鸿

撰写时间:2019年05月14日 星期二

                                     程序员的日常操作—修改多表数据                      

单表修改与多表修改的操作步骤大同小异,都要运用到传递过来的参数,就是从页面新增传递过来的数据。接下来我们要在控制器里进行五步操作。1判断数据是否在数据库已经存在。3获取要修改的数据。3根据主键ID提取数据4执行修改5将修改的数据保存到数据库。步骤和单表的修改操作没什么不同,与多表新增更相似,新增也可以说是修改的操作。不过在多表修改操作里,并不是多张数据表一起修改,而是一张一张的修改。重点是要会判断先改哪张表。下面是两张关系表:
在这里插入图片描述

这两张关系表里很清楚的看到,用户表里面的主键(用户ID)作为学生表和用户角色明细表里面的外键.所以我们就先修改用户表,在修改学生表、用户明细表。其代码如下:

 public ActionResult UpdateStudent(PW_Student pwStudent, PW_User pwUser, HttpPostedFileBase fileStudentImage)

    {

        ReturnJson returnJson = new ReturnJson();

        try

        {

            //判断修改后的数据是否与数据库数据重复

            var oldStudentRow = (from tbStudent in myModels.PW_Student

                                 where tbStudent.studentID!= pwStudent.studentID &&

                                      (tbStudent.StudentNumber == pwStudent.StudentNumber ||

                                      tbStudent.StudentIDNum == pwStudent.StudentIDNum)

                                 select tbStudent).Count();

            if (oldStudentRow == 0)

            {

                var userCount = (from tbUser1 in myModels.PW_User

                                 where tbUser1.UserID !=pwUser.UserID &&

                                (tbUser1.UserNuber == pwStudent.StudentNumber ||tbUser1.UniformAuthenticationCode == pwUser.UniformAuthenticationCode)

                                 select tbUser1).Count();

                if (userCount == 0)

                {

                    //根据UserID将需要修改的用户表的数据提取出来

                    PW_User dbUser = (from tbUser in myModels.PW_User

                                      where tbUser.UserID ==pwUser.UserID

                                      select tbUser).Single();

                    //账号

                    dbUser.UserNuber =pwStudent.StudentNumber;

                    //密码(加密后的账号)

                    dbUser.Password =Common.AESEncryptHelper.Encrypt(pwStudent.StudentNumber);

                    //获取统一认证码

                   dbUser.UniformAuthenticationCode = pwUser.UniformAuthenticationCode;

                    //保存新的用户信息

                    myModels.Entry(dbUser).State= System.Data.Entity.EntityState.Modified;
                    //根据StudentID将需要修改的学生表的数据提取出来
                    PW_Student dbStudent = (from tbStudent in myModels.PW_Student
                                           where tbStudent.studentID == pwStudent.studentID

                                           select tbStudent).Single();

                    //身份证

                    dbStudent.StudentIDNum= pwStudent.StudentIDNum;

                    //学号

                    dbStudent.StudentNumber =pwStudent.StudentNumber;

                    //姓名

                    dbStudent.StudentName =pwStudent.StudentName;

                    //性别

                    dbStudent.StudentSex =pwStudent.StudentSex;

                    //学院ID

                    dbStudent.AcademeID =pwStudent.AcademeID;

                    //年级ID

                    dbStudent.GradeID =pwStudent.GradeID;

                    //专业ID

                    dbStudent.SpecialtyID =pwStudent.SpecialtyID;

                    //班级ID

                    dbStudent.ClassID =pwStudent.ClassID;

                    //图片

                    if (fileStudentImage!= null && fileStudentImage.ContentLength> 0)

                    {

                        //存放图片的变量

                        byte[] imgFile = null;

                        //变量长度

                        imgFile = new byte[fileStudentImage.ContentLength];

                        //读取图片存入变量

                       
   fileStudentImage.InputStream.Read(imgFile, 0,
    fileStudentImage.ContentLength);

                       
    dbStudent.StudentPicture = imgFile;

                    }

                    //修改学生表信息

                   
  myModels.Entry(dbStudent).State = System.Data.Entity.EntityState.Modified;

                    //保存数据库

                    myModels.SaveChanges();

                    returnJson.State = true;

                    returnJson.Text = "考生信息修改成功!";

                }

                else

                {

                    returnJson.State = false;

                    returnJson.Text = "该账号或统一认证码已经存在!";

                }

            }

            else

            {

                returnJson.State = false;

                returnJson.Text = "该学生信息已经存在,不需要重复录入!";

            }

        }

        catch (Exception e)

        {

            Console.WriteLine(e);

            returnJson.State = false;

            returnJson.Text = "数据异常!";

        }

        return Json(returnJson, JsonRequestBehavior.AllowGet);

    }

而在视图里,保存多表修改数据操作和单表修改数据操作原理没什么不同。其实无论是多表还是单表,新增操作和修改操作总是大同小异。主要有五步操作,1获取页面数据2判断输入框的数据不为空3进行异步提交4关闭模态框5刷新一下表格。下面是保存多表修改代码:

  $("#btnSaveUpdate").click(function () {

        //获取页面数据

        var AcademeID = $("#formUpdateExaminee [name='AcademeID']").val();//学院ID

        var SpecialtyID = $("#formUpdateExaminee[name='SpecialtyID']").val();//专业ID

        var GradeID = $("#formUpdateExaminee [name='GradeID']").val();//年级ID

       var ClassID = $("#formUpdateExaminee[name='ClassID']").val();//班级ID

        var StudentNum = $("#formUpdateExaminee [name='StudentNumber']").val();//学号

        var UniformAuthenticationCode = $("#formUpdateExaminee [name='UniformAuthenticationCode']").val();//统一认证码

        var StudentName = $("#formUpdateExaminee[name='StudentName']").val();//姓名

        if (AcademeID > 0 && SpecialtyID > 0&& GradeID > 0 && ClassID > 0 && StudentNum != "" && UniformAuthenticationCode!= "" &&StudentName != "") 

        {

            //加载层

            var layerIndex = layer.load(0);

            //提交表单

            $("#formUpdateExaminee").ajaxSubmit(function (returnJson) {

                //关闭加载层

                layer.close(layerIndex);

                if (returnJson.State == true) {

                    //关闭模态框

                    $("#modUpdateExaminee").modal("hide");

                    //刷新table

                    tabStudentSearch();

                }

                //提示信息

               
 layer.alert(returnJson.Text, { icon: 0, title: '提示' });

            });

        }

        else {

            layer.alert('请填写完整信息', { icon: 0, title: '提示' });

        }

    });
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值