StringBuilder:一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。
StringBuilder比StringBuffer在实现中更快,在StringBuilder上主要操作的是append和 insert方法。将给定的数据转换成字符串,将字符串的字符添加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而insert 方法则在指定的点添加字符。当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能
StringBuilder使用
引用System.Text;
StringBuilder strSql = new StringBuilder();
可以使用读/写 Capacity 属性来设置对象的最大长度。strSql.Capacity = 10;
常用的方法:
Append方法:将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。
一个更新的sql语句。它的效果和一条sql语句是一样的。
/// <summary>
/// 更新一条数据,上传述职报告等信息;-2015年12月26日范晓权修改;
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool UpdateWord(EvaluationSystem.Model.CadresRateEntity model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update T_CadresRate set ");
strSql.Append("CadresName =@CadresName,");
strSql.Append("UnitClass = @UnitClass,");
strSql.Append("UnitName = @UnitName,");
strSql.Append("Year= @Year,");
strSql.Append("ReportName=@ReportName,");
strSql.Append("ReportAdress = @ReportAdress,");
strSql.Append("AssessmentResult = @AssessmentResult,");
strSql.Append("Punishment = @Punishment,");
strSql.Append("UserName =@UserName,");
strSql.Append("Status=@Status");
strSql.Append(" where CadresID=@CadresID");
SqlParameter[] parameters = {
new SqlParameter("@CadresName", SqlDbType.Text ),
new SqlParameter("@UnitClass", SqlDbType.Text ),
new SqlParameter("@UnitName",SqlDbType.VarChar,100),
new SqlParameter("@Year",SqlDbType.VarChar,50),
new SqlParameter("@ReportName",SqlDbType.VarChar,100),
new SqlParameter("@ReportAdress",SqlDbType.Text),
new SqlParameter("@AssessmentResult",SqlDbType.VarChar,50),
new SqlParameter("@Punishment",SqlDbType.Text),
new SqlParameter("@UserName",SqlDbType.VarChar,50),
new SqlParameter("@Status",SqlDbType.VarChar,50),
new SqlParameter("@CadresID",SqlDbType.VarChar,100)};
parameters[0].Value = model.CadresName;
parameters[1].Value = model.UnitClass;
parameters[2].Value = model.UnitName;
parameters[3].Value = model.Year;
parameters[4].Value = model.ReportName;
parameters[5].Value = model.ReportAdress;
parameters[6].Value = model.AssessmentResult;
parameters[7].Value = model.Punishment;
parameters[8].Value = model.UserName;
parameters[9].Value = model.Status;
parameters[10].Value = model.CadresID;
int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
if (rows > 0)
{
return true;
}
else
{
return false;
}
}
insert方法可以实现与Append一样的效果。 StringBuilder strSql = new StringBuilder();
strSql.Insert(strSql.length(),"fxq");
Remove 方法:方法从当前 StringBuilder 中移除指定数量的字符
StringBuilder strSql = new StringBuilder();
strSql.Remove(3,4); //从第3个位置开始,删除4个字符串;
Replace方法:用另一个指定的字符来替换StringBuilder对象内的字符。使用Replace方法来搜索对象,查找所有的感叹号字符,并用问号字符来替换它们。
<span style="font-family:SimSun;"> StringBuilder strSql = new StringBuilder("Hello World!");
strSql.Replace('!', '?'); //替换;</span>
String 或 StringBuilder 对象的串联操作的性能取决于内存分配的发生频率。String 串联操作每次都分配内存,而 StringBuilder 串联操作仅当 StringBuilder 对象缓冲区太小而无法容纳新数据时才分配内存。因此,如果串联固定数量的 String 对象,则 String 类更适合串联操作。这种情况下,编译器甚至会将各个串联操作组合到一个操作中。如果串联任意数量的字符串,则 StringBuilder 对象更适合串联操作;例如,某个循环对用户输入的任意数量的字符串进行串联。