如果我有这么一个方法
public  void GetSubData()
{
    string sqlstr = "select * from table1";
    cmm.ExecuteReader(sqlstr);//假设这个是作用数据库的语句 
    sqlstr = "select * from table2";
    cmm1.ExecuteReader(sqlstr);//假设这个是作用数据库的语句 }
现在想改会stringBuilder怎么该,是new 两个stringBuilder
还是只要new 一个

解决方案 »

  1.   

    new 一个stringbuilder就可以了
      

  2.   

    运用它的remove()和append()方法改变其内容
      

  3.   

    什么意思?StringBuilder sB = new StringBuilder();String s1 = "hello ";
    sB.Append(s1);String s2 = "world";
    sB.Append(s2);sB.ToString();   的结果是"hello world"
      

  4.   

    stringbuilder 是动态增、删、改字符串的类 修改对象后仍然返回同一对象的引用
    无须清除以前的内容!
      

  5.   

    StringBuilder sB = new StringBuilder("select * from table1");
    sB.ToString();sB.Replace("table1","table2");
    sB.ToString();你查看结果就知道它的用处了
      

  6.   

    一、一个两个无所谓,多一个StringBuilder对象根本就不算什么。
    二、这样的情况可以使用模板,例如:static string template1 = "select * from {0}"//.....cmm.ExecuteReader( string.Format( template1, "table2" ) );
    但是这样调用SQL语句有潜在的注入式漏洞。一个变量只作一个用途,储存一种数据,这样程序会更清晰,无必要为了省掉一个StringBuilder对象把程序变复杂。
      

  7.   

    在这个地方不需要用StringBuilder.用什么要看具体情况,不是全由主观意愿.StringBuilder适用于2种情况:1是特长的字符串的操作(可以大大节约内存).2是对字符串的多次操作(比如在一个字符串里多次replace或多次用+连接或多次substring)显然上面都不是这样的情况.何必自己给自己找麻烦.直接用string操作有何不可??各自优点:
    string---使用方便.
    StringBuilder---使用更少的资源(直接说是内存,但因为内存开辟次数减少引起GC回收次数变少,也另外一方面间接节约了CPU)比如在一个QQ群1年的聊天记录中搜索统计每个人发言次数这样的操作,几乎只能用StringBuilder,直接用string几乎可以确定会死机.
      

  8.   

    StringBuilder和String(差别很大):
       string s = ;
       long t1 = System.DateTime.Now.Ticks;
       for(int i=0;i<10000;i++)s += Convert.ToString(i);
       long t2 = System.DateTime.Now.Ticks;   long t3 = System.DateTime.Now.Ticks;
       System.Text.StringBuilder sb = new System.Text.StringBuilder();
       for(int i=0;i<10000;i++)sb.Append(Convert.ToString(i));
       string s1 = sb.ToString();
       long t4 = System.DateTime.Now.Ticks;   long t5 = System.DateTime.Now.Ticks;
       System.Text.StringBuilder sb1 = new System.Text.StringBuilder(5000);
       for(int i=0;i<10000;i++)sb1.Append(i);
       string s2 = sb1.ToString();
       long t6 = System.DateTime.Now.Ticks;   long t7 = System.DateTime.Now.Ticks;
       System.Text.StringBuilder sb2 = new System.Text.StringBuilder(10000);
       for(int i=0;i<10000;i++)sb2.Append(i);
       string s3 = sb2.ToString();
       long t8 = System.DateTime.Now.Ticks;   ListViewItem item1 = result.Items.Add(使用String类,利用operator +进行操作);
       item1.SubItems.Add(Convert.ToString((t2-t1)/10000));   ListViewItem item2 = result.Items.Add(使用StringBuilder类,不对初始大小赋值);
       item2.SubItems.Add(Convert.ToString((t4-t3)/10000));   ListViewItem item3 = result.Items.Add(使用StringBuilder类,对初始大小赋值为申请数量的1/2);
       item3.SubItems.Add(Convert.ToString((t6-t5)/10000));   ListViewItem item4 = result.Items.Add(使用StringBuilder类,对初始大小赋值为申请数量);
       item4.SubItems.Add(Convert.ToString((t8-t7)/10000));