对字符串进行操作,其实.net里面提供了很多方法,这里想要总结的,主要是针对数据库操作的时候需要构造sql的查询语句的时候对字符串操作的一些方法。
         从最简单的一条查询语句看起。
         比如"SELECT dwSpecialCureAction, dwMacroCureAction, dwSpecialMode FROM Policy_VirusScan_RealTime WHERE  PolicyGroupID=7 AND OwnReginId='zy' AND PolicyId=43"其中where后面跟的三个字段用到了3个变量。
        这里就有很多种方法,可以构造这样一个语句。
        第一个办法可以把sql语句写成这样,带三个参数,
        "SELECT dwSpecialCureAction, dwMacroCureAction, dwSpecialMode FROM Policy_VirusScan_RealTime WHERE  PolicyGroupID=@PolicyGroupID AND OwnReginId=@OwnReginId AND PolicyId=@PolicyId"
        在进行数据库操作的时候使用带参数的重载方法。不过我对用参数这种方法应用比较少,对这个方法不太熟悉,基本上都不用这种方法。

        第二个办法就是拼字符串的方法了。
     string PolicyGroupID="7";
     string OwnReginId="zy";
     string PolicyId="43";
      string sql="SELECT dwSpecialCureAction, dwMacroCureAction, dwSpecialMode FROM Policy_VirusScan_RealTime WHERE  PolicyGroupID="+PolicGroupID+"AND OwnReginId='"+OwnReginId+"'"+" AND PolicyId="+PolicyId;
       简单的用+号把几个字符串连接起来,很象是在拼凑的一个句子,不过还是很有效的。

       第三个方法是用string.Format()方法。
     string PolicyGroupID="7";
     string OwnReginId="zy";
     string PolicyId="43";

      string sql=string.Format("SELECT dwSpecialCureAction, dwMacroCureAction, dwSpecialMode FROM Policy_VirusScan_RealTime WHERE PolicyGroupID={0} AND OwnReginId='{1}' AND PolicyId={2}",PolicyGroupID,OwnReginId,PolicyId)
       曾经有一段时间很喜欢这种方法,甚至大部分的代码都是这样写的,也行之有效,但是这样有一个比较大的缺点,对比较短的sql 确实很好用,但是如果参数比较多,表结构比较复杂,一旦sql出错,调试起来非常让人头大。当然如果经历过了调试,完全正确的话,不用说,这是非常好的方法。

        第四个方法是用StringBuilder 方法
     使用StringBuilder类必须引用
     using System.Text;

     string PolicyGroupID="7";
     string OwnReginId="zy";
     string PolicyId="43";

       StringBuilder sql = new StringBuilder();
        sql.Append("SELECT dwSpecialCureAction, dwMacroCureAction, dwSpecialMode");
        sql.Append(" FROM "+TableName[int.Parse(ViewState["VirusPolicyId"].ToString())]);
        sql.Append(" WHERE ");
        sql.Append(" PolicyGroupID="+PolicyGroupID);
        sql.Append(" AND OwnReginId='"+OwnReginId+"'");
        sql.Append(" AND PolicyId="+PolicyId);
       
        StringBuilder类要转换成string类型,强类型转换是不行的,必须使用自带的方法。
        sql.ToString();
        在我的理解中StringBuilder和string 一样,都是对可以对字符串进行操作的方法。这种方法看起来代码似乎很多,但是确是我最近比较喜欢用的一个方法。这种方法的好处是把select ,from where以及各个参数分开来写,这样一方面看起来比较方便,如果出错的话,能够迅速找到出错的字段并进行修改。而且从团队来考虑的话,可读性更强一些。

        以上写了这么多种我比较常用的方法,这里想请高手指点一下,主要用于构造sql语句的时候,哪种方法更常用,或者符合开发习惯,效率更高一些?
posted on 2006-11-17 13:13  飞天名猪  阅读(457)  评论(0编辑  收藏  举报