字符串拼接主要包括以下三类,第三种方法是今天的重点。

  • +
  • Sring.format()
  • StringBuilder.Append()
一、+
对于少量固定的字符串拼接,我们可以简单利用“+”:
string s= “a” + “b” + “c”;
这样写,系统或优化成如下代码,不会新建多个字符串。
s= String.Concat(“a”,”b”,”c”)

如果写成如下代码,系统则会创建三个新的字符串

string str="a";
str+="b";
str+="c";

实现原理是:第一步现在内存中分配空间,存储str变量的对象,值为“a“;第二句代码“+=”时,就会创建一个对象来存储新的字符串(“ab”),把str指向这个新的地址;第三句代码

“+=”时,就又会创建一个对象来存储新的字符串(“abc”),再次把str指向新的地址。所以只有简单几步的拼写时,一般不会有太大问题,如果有时候需要循环拼接时,就会不断创
建新的对象,很浪费空间和性能。
二、Sring.format()

public static String Format(IFormatProvider provider, String format, params Object[] args) <br>{if (format == null || args == null)throw new ArgumentNullException((format==null)?"format":"args");StringBuilder sb = new StringBuilder(format.Length + args.Length * 8);sb.AppendFormat(provider,format,args);return sb.ToString();
}

可以看到是先创建一个StringBuilder类型的变量,长度为第一个参数的长度+参数长度的8背。.net自动分配一个比较大的容量来存储。这种方法的代码看起来比较整洁,易于阅

读,效率也比“+”高效很多。
三、StringBuilder.Append()

StringBuilder str=new StringBuilder();
str.Append("a");

StringBuilder是预先创建一个比较的内存,以后每次操作是判断容量上线是否不够用,如果不够用就自动把容量扩大一倍,修改的还是第一次创建的对象的值。
具体实现流程为:首先将需要的数据存储到实体的list中,然后将这个list传给我们批量添加的方法;批量添加的方法首先应该打开数据库连接,然后开始进行sql字符串的拼接,

拼接完成后,调用sqlhelper方法进行添加。
具体代码如下:
        /// <summary>/// 判分之后返回信息到数据库/// </summary>/// <param name="excelrecord">根据StudentID判断</param>/// <returns>是否添加成功</returns>public void ReturnExcelScore(List<ExcelQuestionRecordEntity> list, ExcelQuestionRecordEntity excelrecord){           String which = WhichExcelRecored (excelrecord);StringBuilder sbSql = new StringBuilder();sbSql.Append("update ExcelQuestionRecordEntity_" + which + " SET Fration = CASE QuestionID ");string Fation = string.Empty;string questionID = string.Empty;string studentIDs = string.Empty;string tamstamp = string.Empty;//根据学号,和时间戳选出这一段的内容,然后再根据QuestionID给每一个flag更新分数。#region 更新分数的拼接sql语句for (int i = 0; i < list.Count; i++){questionID = list[i].QuestionID.ToString();//将分数传给变量Fation = list[i].Fration .ToString();//判分sql,拼接sql,用case,when语句sbSql.Append(" WHEN '" + questionID + "' THEN '" + Fation + "'");}sbSql.Append(" end,"); //加“,” #endregion#region 拼接考生答案更新到数据库中//拼接更新考生答案sqlsbSql.Append("  ExamAnswer = CASE QuestionID");for (int i = 0; i < list.Count; i++){string examAnswer = list[i].ExamAnswer.ToString();if (examAnswer.IndexOf("'") > 0){examAnswer = "考生答案错误";}questionID = list[i].QuestionID.ToString();//学生答案信息更新,when后边的是QuerstionID,sbSql.Append(" WHEN '" + questionID + "' THEN '" + examAnswer + "'");}sbSql.Append(" end");   //不加逗号“,” #endregionstudentIDs += "'" + list[0].StudentID.ToString() + "'";tamstamp += "'" + list[0].TimeStamp.ToString() + "'";studentIDs.Remove(studentIDs.Length - 1, 1);sbSql.Append(" where StudentID in (" + studentIDs + ") and TimeStamp in (" + tamstamp + ")");DataTable dt = sqlhelper.ExecuteQuery(sbSql.ToString(), CommandType.Text);}

批量添加-动态拼接字符串相关推荐

  1. js 动态获取表格中的值并修改其他表格+js 动态拼接字符串

    主要是用 思路是给表格设置id,取 表格tr 的值 $('#'+d+"DataOptions" +" tr").each(function(i){var fie ...

  2. java求拼接后的字符串长度,java如何拼接字符串

    java 动态拼接字符串,Java 字符串拼接效率分析及最佳实践,java字符串拼接,java如何拼接字符串 在JAVA 中拼接两个字符串的最简便的方式就是使用操作符"+"了.如果 ...

  3. MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句

    文章目录 实际需求 分析思路 写拼接 SQL 脚本的脚本语句 执行得到脚本语句 保存成 SQL 脚本文件 实际需求 有些行政区域的字段 area_fullname 是空的,如何补全呢?如下所示: 分析 ...

  4. 关于EF中批量添加的个人探索

    实际的测试代码和数据记录,还有最终的总结都在下面: /// <summary>/// 这种做法,不用了说了,每次遍历都会打开一次db链接,然后执行insert操作:/// </sum ...

  5. Java如何拼接字符串

    StringBuilder 的 append() 方法 "循环体内,拼接字符串最好使用 StringBuilder 的 append() 方法,而不是 + 号操作符" 这句话,我们 ...

  6. oracle拼接字符串报错,Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决

    备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id ...

  7. 【扇贝批量添加单词到词库】利用python调用扇贝API (oauth2)

    扇贝还是很不错的背单词系统,但是我一直不理解为什么官方提供的批量添加单词页面每次限制10个= =. 美剧党随手挤了很多单词准备导入的时候,还有从有道单词本导入的时候,都很尴尬..查了一下,还没有人写过 ...

  8. c++ 字符串拼接_源码上看 .NET 中 StringBuilder 拼接字符串的实现

    专注分享C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协 ...

  9. 前端展示中实现批量标签动态生成

    前端展示中实现批量标签动态生成 使用过报表的小伙伴,经常会有条码打印.标签打印的需求,一两个标签还好处理,但很多时候我们可能需要的是几十.上百个内容的批量打印,如下图所示: 今天我们就来为大家介绍,如 ...

最新文章

  1. android9多了什么功能,Android 9.0 都增加了什么功能?
  2. python2 队列的使用_python双端队列原理、实现与使用方法分析
  3. ASP.NET两个关联的表的增删查改
  4. 如何和女生聊天不进入友谊区
  5. 【✅windows奇怪的知识增加了✅】windows系统下快速删除海量小文件方法
  6. input输入框获取焦点时,光标置于最右
  7. qq显示服务器连接中0x9a,打开QQ出现0x00008819错误代码的解决方法
  8. linux怎么同时查看两个文件,MultiTail - 在单个Linux终端中同时监视多个文件
  9. python3循环一直到一个值结束_一步一步学Python3(小学生也适用) 第十七篇:循环语句for in循环...
  10. 使用Apriori进行关联分析(一)
  11. ATM系统之问题描述与词汇表
  12. ssm框架中mysql的分页_SSM框架中mapper层,增删改查,如何实现
  13. Excel的统计字符数
  14. 西安交大2021考研计算机专业复试分数线,西安交通大学2021年研究生复试分数线是多少...
  15. [02-27][08奥斯卡四项大奖][老无所依][DVD中英双字][已测][17:21]
  16. 搭建情感分析系统,tf-idf,word2vec
  17. 地理信息系统GIS小结
  18. h5/web 原生定位、高德、腾讯地图定位
  19. python鲜花水果商城毕业设计开题报告
  20. RC电路的充放过程C语言实现,一种快速放电的RC充放电电路的制作方法

热门文章

  1. 晨曦 - 江湖一剑客
  2. Git Gitosis
  3. 《炬丰科技-半导体工艺》集成微加工平台各向异性腐蚀
  4. 数据挖掘是什么,数据挖掘的学习路线是什么?
  5. 双系统开机 进入grub resource,并且进不bios
  6. java商城管理系统_带数据库_带界面化可用来毕业设计
  7. 怎么开通附近小程序-微信小程序开发-视频教程20
  8. 网络数据保障ptop_网络影响未来十大预言
  9. MobileNext:打破常规,依图逆向改造inverted residual block | ECCV 2020
  10. Docker三剑客之Docer Swarm