对字符串进行操作,其实.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语句的时候,哪种方法更常用,或者符合开发习惯,效率更高一些?
从最简单的一条查询语句看起。
比如"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语句的时候,哪种方法更常用,或者符合开发习惯,效率更高一些?