程序员的日常操作—多表新增数据

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

作者:刘剑鸿

撰写时间:2019年05月13日 星期一

                                程序员的日常操作—多表新增数据                      

单表新增与多表新增的操作步骤大同小异,都要运用到传递过来的参数,就是从页面新增传递过来的数据。接下来我们要在控制器里进行四步操作。1判断传递过来的数据是否为空。2判断数据是否在数据库已经存在。3执行新增操作。4将新增的数据保存到数据库。步骤和单表的新增操作没什么不同,不过在多表新增操作里,并不是多张数据表一起新增,而是一张一张的新增。重点是要会判断先增哪张表。下面是两张关系表:
在这里插入图片描述

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

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

    {

        ReturnJson returnJson = new ReturnJson();

        try//判断新增的学生是否已经存在

        { 

            var studentCount = (from tbStudent in myModels.PW_Student

                                where tbStudent.studentID   == pwStudent.studentID

                           ||   tbStudent.StudentIDNum == pwStudent.StudentIDNum

                           || tbStudent.StudentNumber == pwStudent.StudentNumber

                                select tbStudent).Count();

            if (studentCount == 0)

            {   //第一张表:用户表
           //判断账号是否重复

                var userCount = (from  tbUser in myModels.PW_User

                                 where tbUser.UserNuber  ==pwStudent.StudentNumber

                                 ||    tbUser.UniformAuthenticationCode == pwUser.UniformAuthenticationCode

                                 select tbUser).Count();

                if (userCount == 0)

                {//一、新增用户表

                 //学生账号与学号一致

                    pwUser.UserNuber = pwStudent.StudentNumber;

                    //密码与学号一致,密码要加密

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

                    pwUser.ToVoidNo = true;//有效账号

                   myModels.PW_User.Add(pwUser);

                    if (myModels.SaveChanges() >0)

                    {
            var userId =
                         pwUser.UserID;

                  //二、新增学生表 //声明一个byte[](字节型数组)来保存新增的图片

                        byte[] imgFile = null;

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

                   { //初始化数组的长度,为节省空间,长度由实际上传的图片的长度决定

                     imgFile = new byte[fileStudentImage.ContentLength];

        //读取该图片文件  将图片转为流结束位置  将流读取为byte[],参数:byte[],读取开始位置,读取字节数

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

                        }

                        pwStudent.UserID = userId;//用户ID

                       
              pwStudent.StudentPicture = imgFile;//图片

                       
        pwStudent.StudentState = "应届";

                       
       myModels.PW_Student.Add(pwStudent);

                        //三、新增用户角色明细表

             PW_UserRoleDetail pwUserRoleDetail = new PW_UserRoleDetail();

                       
         pwUserRoleDetail.UserID = userId;

         pwUserRoleDetail.UserTypeID =
6;  //对应数据库的类型:6:表示学生

                       
  myModels.PW_UserRoleDetail.Add(pwUserRoleDetail);

                       
           myModels.SaveChanges();

                        returnJson.State = true;

                        returnJson.Text = "保存考生信息成功!";

                    }

                    else

                    {

                        returnJson.State = false;

                        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刷新一下表格。其代码如下:

   $("#btnSaveInsert").click(function () { //获取页面数据          

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

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

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

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

  var StudentIDNum = $("#formInsertExaminee [name='StudentIDNum']").val();//身份证

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

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

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

if (AcademeID > 0 && SpecialtyID > 0 && GradeID > 0 && ClassID > 0 && StudentNum != "" &&UniformAuthenticationCode != "" && StudentName != "") { //必选项        

  var layerIndex = layer.load(0); //显示加载层   

   $("#formInsertExaminee").ajaxSubmit(function (returnJson) {//新的提交方法

        layer.close(layerIndex); //关闭加载层

      if (returnJson.State == true) {//关闭模态框

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

          tabStudentSearch();//刷新table     }

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

            });

        }

    })                       
         备注:视图里的代码都是运用jQuery的代码。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值