.NET餐厅管理系统sql数据帮助类执行对单个Entity的更新(这个可以添加额外的约束条件)

news/2024/4/25 1:58:58/文章来源:https://blog.csdn.net/m0_74456535/article/details/128023071

    #region  //执行对单个Entity的更新(这个可以添加额外的约束条件)
    /// <summary>
    /// 执行对单个Entity的更新
    /// </summary>
    /// <param name="baseEntity">由控制器组装而来的实体</param>
    /// <param name="otherConditions">其他约束条件用(and开头,例如:"and name='王斐'"</param>
    public void ExecuteObjectUpdate(BaseEntity baseEntity, string otherConditions)
    {
        string sql_ = "";//values 之前
        try
        {
            Type type = baseEntity.GetType();
            IList<CustomAttributeData> tableAttribute = type.GetCustomAttributesData();//该方法是根据Type属性找到的
            string tableName = "";//表名
            tableName = (String)tableAttribute[0].ConstructorArguments[0].Value;//解刨Type属性中偶然发现

            string operation = "update";//执行操作方法,此处可以考虑将操作类型operation由调用者确定
            PropertyInfo[] propertyList = type.GetProperties();//返回PropertyInfo类型,用于取得该类的属性的信息

            //生成SQL语句
            string propertyName = "";//属性名
            string propertyValue = "";//属性值

            sql_ = operation + " " + tableName + " set ";

            int updateCount = 0;//用于计数更新

            for (int i = 1; i < propertyList.Length; i++)
            //这里考虑并没有写死跟添加一样,也从0开始,有一段时间考虑想从i=1开始,
            //但是存在部分情况主键可以改变的情况,因此,这里会默认的将首字段进行拼接,
            //会出现update tableName set PKName=value.... where  PKName=value;的情况
            //个人认为这并不影响


            //2015年5月28日02:14:26
            //由于部分主键是自增的,如果默认主键参与跟新,则会因为自增字段不能update而报错
            //但是没有找到合适方法
            //这里还是从第2个开始判断
            {
                //propertyList.Add("");
                propertyName = propertyList[i].Name;
                propertyValue = GetObjectPropertyValue(type, baseEntity, propertyName);//获取属性值
                if (propertyValue != null)
                {
                    if (updateCount != 0)//判断是否是第一个更新的字段如果是则不添加逗号
                    {
                        sql_ += " , ";
                    }
                    sql_ += "[" + propertyName + "]"+"= N'{0}'";
                    sql_ = string.Format(sql_, propertyValue);
                    updateCount++;
                }

            }
            string PKPropertyName = propertyList[0].Name;//此处还在考虑 是否需要解析一下 ,可以改为支持两个主键或者以上
            string PKPropertyValue = GetObjectPropertyValue(type, baseEntity, PKPropertyName);

            sql_ = sql_ + " where " + PKPropertyName + "=N'{0}'" + " " + otherConditions;//此处添加而外约束条件跟主键
            sql_ = String.Format(sql_, PKPropertyValue);

            OpenDb();
            SqlCommand cm = new SqlCommand(sql_, conn);
            cm.ExecuteNonQuery();
            cm.Dispose();
            cm = null;
            CloseDb();
        }
        catch (Exception e)
        {
            throw new Exception(e.ToString() + "  " + sql_);
        }

    }
    #endregion
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_38681.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark系列之Spark的数据倾斜

title: Spark系列 第九章 Spark的数据倾斜 9.1 Spark调优概述 ​ 有的时候&#xff0c;我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜&#xff0c;此时 Spark 作业的性能会比期望差很多。数据倾斜调优&#xff0c;就是使用各种技术方案解决不同类型的数据倾斜问题…

2022腾讯全球数字生态大会【存储专场】它来了|预约有礼

它来了&#xff01;它来了&#xff01; 2022腾讯全球数字生态大会【存储专场】它来了&#xff01; 作为腾讯集团产业互联网规格最高、规模最大、覆盖面最广的年度盛会 今年存储专场与您一起探讨 分布式高性能存储与数据分析处理的科技创新和最新成果 存储会场六大亮点&…

PyQt5可视化编程-事件、信号和对话框

一、概述: 所有的应用都是事件驱动的。事件大部分都是由用户的行为产生的&#xff0c;当然也有其他的事件产生方式&#xff0c;比如网络的连接&#xff0c;窗口管理器或者定时器等。调用应用的exec_()方法时&#xff0c;应用会进入主循环&#xff0c;主循环会监听和分发事件。…

【SpringBoot】对于yaml的详细学习和三种属性赋值的实战详解

一.yaml详细讲解 1.1 什么是yaml&#xff1f; YAML是一种数据序列化语言&#xff0c;通常用于编写配置文件。业界对YAML有不同的看法。有些人会说YAML代表另一种标记语言。其他人认为“YAML不是标记语言”&#xff08;“YAML并非标记语言”&#xff09;。“YAML”只是这句话的…

CDMP选修课都有什么?

大家都知道CDMP认证考试有四个级别。分别是A级&#xff08;基础级&#xff09;P级&#xff08;实践级&#xff09;M级&#xff08;专业级&#xff09;F级&#xff08;大师级&#xff09;。级别越高&#xff0c;考试难度就越大&#xff0c;分数比例要求也更高&#xff0c;相对应…

Unity ab包加载文本 puerts 自定义loader

输出ab包 他会把你创建的ab包都打包 也就是在这里的创建的 string assetBundleDirectory Path.Combine(Application.streamingAssetsPath, "OutAssetBundles"); if (!Directory.Exists(assetBundleDirectory)) {Directory.CreateDirectory(assetBundleDirectory);…

【HIT-OSLAB-实验中的碎碎念】

文章目录应该养成的好习惯删除 替换 修改 内容时 记得留备份遇到问题要通过文字 图片 等多种途径去记录不同的项目应该在不同的文件夹进行处理代码文档 记得添加一些注释用于说明功能多输出有区别度的提示信息s找bug 先定位错误 再改当一份代码有不同版本的时候 记得说明每份代…

黎曼的几何基础,维度

黎曼的几何基础&#xff0c;让数学领先物理100年&#xff0c;维度是人类最大的障碍 - 知乎 高斯很早就有了“高维几何”的想法&#xff0c;他曾经向他的同事们说起假想完全生活在二维表面上的“书虫”&#xff0c;并想要把这推广到高维空间的几何学中去。然而&#xff0c;由于害…

进程与信号(三)

目录 一、前言 二、Signals 1、Signal Handling&#xff08;ctrlc.c&#xff09; 2、Sending Signals &#xff08;1&#xff09;alarm.c &#xff08;2&#xff09;A Robust Signals Interface &#xff08;3&#xff09;ctrlc2.c 3、Signal Sets &#xff08;1&…

ConstraintLayout布局扩展

相信大家对ConstraintLayout&#xff08;约束布局&#xff09;不陌生,这是google推出的一个强大控件&#xff0c;之所以强大其实主要归纳有两点&#xff1a;减少布局层次&#xff0c;能够轻松实现复杂布局。当然在我们实际使用过程中&#xff0c;是否真的减少了布局层次&#x…

FPGA实现图像对比度自动调整,提供2套工程源码和技术支持

目录1.算法原理介绍2.HLS算法实现3.工程1介绍&#xff1a;zynq7100实现4.工程2介绍&#xff1a;Kintex7实现5.上板调试验证6.福利&#xff1a;工程源码获取1.算法原理介绍 使用直方图均衡技术实现 使用直方图均衡技术将原始图像的灰度直方图从比较集中的某个灰度区间变成在全部…

ASCHIP_ISP Tool 工具 使用与更新

系列文章目录 ASCHIP-ISP Tool 版本1 2022 11 26ASCHIP-ISP Tool 版本1 使用说明 2022 11 26 软件介绍 对窗体进行初步配置&#xff0c;配置其大小与显示 一&#xff1a;软件介绍 ASCHIP_ISP Tool 工具是用于具有 ISP 功能型号类型的单片机进行 ISP 更新程序开发实验的配套上位…

[附源码]Python计算机毕业设计SSM隆庆祥企业服装销售管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【网络编程】第二章 网络套接字(socket+UDP协议程序)

&#x1f3c6;个人主页&#xff1a;企鹅不叫的博客 ​ &#x1f308;专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接&#xff1a;代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

Java-泛型实验

1.定义一个学生类Student&#xff0c;具有年龄age和姓名name两个属性&#xff0c;并通过实现Comparable接口提供比较规则&#xff08;返回两个学生的年龄差&#xff09;&#xff0c; 定义测试类Test&#xff0c;在测试类中定义测试方法Comparable getMax(Comparable c1, Compar…

Docker-JenKins安装及配置!

Jenkins官网&#xff1a;Jenkins 安装主机配置&#xff08;官方&#xff09;&#xff1a; 最低&#xff1a; 256 MB 内存 1 GB 的驱动器空间&#xff08;尽管如果将 Jenkins 作为 Docker 容器运行&#xff0c;则建议至少 10 GB&#xff09; 小团队推荐&#xff1a; 4 GB …

英文ppt怎么翻译成中文?教你几种ppt翻译方法

ppt文件受到很多人的喜欢是因为它展示起来直观清晰&#xff0c;无论是老师在课堂上使用ppt课件来教学&#xff0c;还是在工作汇报中用ppt文件展示设计的方案或取得的成果。但当我们需要把ppt文档里的文本内容里的外语翻译成中文的时候&#xff0c;我们应该怎么做呢&#xff1f;…

003. 电话号码的字母组合——回溯算法

1.题目链接&#xff1a; 17. 电话号码的字母组合 2.解题思路&#xff1a; 2.1.题目要求&#xff1a; 给定一个仅包含数字 2-9 的字符串 digits &#xff0c;返回所有它能表示的字母组合。 数字和字母的关系&#xff1a; 例子&#xff1a; 输入&#xff1a;"23" …

[Spring]第二篇:IOC控制反转

简单的说就是,创建对象的权利,或者是控制的位置,由JAVA代码转移到spring容器,由spring的容器控制对象的创建,就是控制反转. spring创建对象时,会读取配置文件,配置文件中主要配置接口和实现类的关系,每个接口对相应一个实现类,使用<bean>标签配置,<bean中的id可以随便…

学生选课系统

项目描述 通过项目背景的分析以及了解到现在学校面临的问题&#xff0c;特别需要一个选课管理系统保证学生信息以及各种课程成绩的准确性和实效性&#xff0c;通过利用计算机的高速计算和快速的统计分析&#xff0c;保证学生信息的最新记录。从教职工的角度老考虑&#xff0c;…