【发布时间】:2023-03-11 17:10:01
【问题描述】:
我正在开发一个针对 .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 会有任何性能提升吗?
提前致谢。
【问题讨论】:
-
@Steve 感谢您的评论。就我而言,我正在向字符串添加一些值。只使用一个变量。例如显示使用多个变量。 st1 += s;
-
是否有不能使用参数化查询的原因?这样可以避免连接的需要,也可以避免其他问题,例如 SQL 注入攻击和数据中的无效字符。
-
在这种情况下,代码可读性也是使用参数化查询的另一个好处。如果我不得不修改一些现有的代码,我不会完全兴奋,这就是我发现的。
-
查看这个问题http://stackoverflow.com/questions/1836016/sqlserverce-problem-with-parameterized-queries-from-net中接受的答案。它显示了一个使用 SQL CE 参数化查询的示例。