日期:2014-05-19  浏览次数:20929 次

请问这两种写法,哪个效率比较高?
String   NoteId   =   //....;
String   userName   =   //....;

写法一:
strSql   =   "delete   from   admin ";
strSql   =   String.Concat(strSql,   "   where   id   =   ",   NoteId);
strSql   =   String.Concat(strSql,   "   and   UserName   =   ' ",   userName,   " ' ");

写法二:
strSql   =   "delete   from   admin   where   id   =   {$id}   and   UserName   =   '{$UserName} ' ";
this.SqlStr   =   this.SqlStr.Replace( "{$id} ",   NoteId);
this.SqlStr   =   this.SqlStr.Replace( "{$UserName} ",   userName);

为了公平,所以写法一二都是用了三个句子写成,请问写法一和写法二,哪个效率高点?

------解决方案--------------------
^^|| lz的想法真好
------解决方案--------------------
差不多吧。也许写法一略高一点,不过相信其差别就算是连续运行一千次也是可以忽略不计的。

------解决方案--------------------
个人感觉第一个效率高.replace的按顺序查找
------解决方案--------------------
都差不多,不过对于这种情况我一般用Format来做,比如:
strSql = "delete from admin where id = {0} and UserName = '{1} ' ";
strSql = string.Format(strSql, NoteId,userName);
------解决方案--------------------
如果UserName里面有单撇号呢? 这么处理会不会有问题?

我都是用存储过程做的
------解决方案--------------------
测试:
循环9000次

1:2秒
2:6秒

菜鸟不懂

楼下的解释下
------解决方案--------------------
是900000次循环
------解决方案--------------------
我也和hbxtlhx一样,喜欢用string.Format
------解决方案--------------------
这种情况基本都是String.Format来解决。没太考虑到底谁的效率更高。
------解决方案--------------------
采用@参数方式更好点
------解决方案--------------------
hbxtlhx(平民百姓)的方法,我喜欢。
------解决方案--------------------
用stringBuilder再测试一下看看。
------解决方案--------------------
区别不大
------解决方案--------------------
就这两种,我个人倾向与第二种

实际使用中用参数和存储过程
------解决方案--------------------
hbxtlhx(平民百姓)的方法,我喜欢。
------解决方案--------------------
都一样,一个sql还用效率高不高,2个字符串相加效率高
------解决方案--------------------
第二个当然慢 因为Replace要有一个查找匹配的过程
string.Format 也应该不会快于第一个,内存分配次数也> =2
平民大哥 string.Format 的原理是什么?能给说说吗?(很感兴趣)