0

我正在开发一个针对 .NET Framework CE 的应用程序,我们有很多通过附加数据构建的 SQL 查询。

一个例子

      string SQL="insert into ERTLISTS (ERTNUM,ERTTYPE,ERT_Status,ERT_Items,ERTTo_Check," & _
                                            "ERT_Date,ERTe_Date,ERT_ID,Location_Count,TRS_Desc,QA_Cycle," & _
                                            "Due_Date,Next_WRK_Date,User_Freq) values (" & _
                 "" & CInt(strData(0)) & "," & _
                  "'" & strData(1) & "'," & _
                   "'" & strData(2) & "'," & _
                     "" & CInt(strData(3)) & "," & _
              "" & CInt(strData(4)) & "," & _
           "#" & CDate((strData(5).Substring(4, 2) & "/" & strData(5).Substring(2, 2) & "/" & strData(5).Substring(0, 2)).ToString()) & "#," & _
              "#" & CDate((strData(6).Substring(4, 2) & "/" & 
            strData(6).Substring(2, 2) &
     "/" & strData(6).Substring(0, 2)).ToString()) & "#," & _
         "" & CInt(strData(7)) & "," & _
         "" & CInt(strData(8)) & "," & _
         "'" & strData(9) & "'," & _
         "'" & strData(10) & "'," & _
        "#" & CDate((strData(11).Substring(4, 2) 
    & "/" & strData(11).Substring(2, 2) & "/" & strData(11).Substring(0, 2)).ToString()) & "#," & _
     "#" & CDate((strData(12).Substring(4, 2) 
    & "/" & strData(12).Substring(2, 2) & "/" & strData(12).Substring(0, 2)).ToString()) & "#," & _"#" & CDate((strData(13).Substring(4, 2) & "/" 
& strData(13).Substring(2, 2) & "/" 
& strData(13).Substring(0, 2)).ToString()) & "#)"

我也知道 StringBuilder ,如果我使用 Stringuilder 会有任何性能提升吗?

提前致谢。

4

1 回答 1

0

字符串类型是不可变的*(一旦创建,就无法更改)*。无法修改已创建的字符串对象。例如,当您将一个字符或另一个字符串附加到一个字符串时,实际上每次都会创建一个新的组合字符串。 StringBuilder是可变的,当您需要修改它的内容时工作得更快。

该类string builder提供了一种更有效的方法来重复向字符串添加位。您为其提供初始容量(它会自动增长,但如果增长太频繁会降低性能)。您可以向其中添加更多位的字符串,而无需创建新对象的开销。

如果你只做几个连接,性能差异将太小而无法衡量,但如果你在一个循环中,构建一个大字符串,那么StringBuilder具有明显的优势。

于 2013-09-26T11:50:14.497 回答