public class SqlStringFormat
{
/// <summary>
/// 公有静态方法,将文本转换成适合在Sql语句里使用的字符串。
/// </summary>
/// <returns>转换后文本</returns>
public static String GetQuotedString(String pStr)
{
return ("'" + pStr.Replace("'","''") + "'");
}
}

这个类用于处理sql语句中需要引号的的字符,时间等,个人感觉很好,但是有个疑问。在sql语句中,需要引号的部分一般是这样'string',那为什么该语句不是这样:
("'" + pStr.Replace+ "'")
而是多出一大堆引号?
希望大家帮忙解答一下("'","''") 这部分是做什么用的?

解决方案 »

  1.   

    仔细看清楚双引号里替换的是什么中间的"双引号"是两个单引号.要不 ' 会使SQL断句嘛,就存不进去喽SQL的转义字符
      

  2.   

    楼主: 这个是 数据库里面的特殊字符,类似的根据数据库的不同而有差异,不过 ' 一直是特殊的字符。这个分解一下也许你更明白。/// <summary>
    /// 公有静态方法,将文本转换成适合在Sql语句里使用的字符串。
    /// </summary>
    /// <returns>转换后文本 </returns>
    //public static String GetQuotedString(String pStr)
    //{
    //return ("'" + pStr.Replace("'","''") + "'");
    //} public static String GetQuotedString(String pStr)
    {
    // 将 ' 单引号 替换为 '' 双单引号 ,而不是双引号
    String afterRep = pStr.Replace(",","''")
    // 将所有字符串数据放入到  '内容' 所引用的内容 
    return String.Format("'{0}'", afterRep);
    } 不知道这样解释,是否明白了 ?'string'
      

  3.   


    public static String GetQuotedString(String pStr)
    {
    return ("'" + pStr.Replace("'","''") + "'");
    ///pStr.Replace("'","''") 这里是把单引号替换成两个单引号,这个我知道。但是这个单引号指的是哪里的单引号?是不是
    ///最前面("'"和最末尾的"'");这里的单引号,如果是,那么实际转换出来的内容应该是''string'',那么,这个''string''
    ///有什么用呢?sql语句中,字符串只要'string'这样表示就行了,为什么非要''string''这样表示呢?我知道两个单引号是
    ///一时单引号号的意思,可为什么代码里还要转义一遍,直接返回'string'不就行了吗?
    ///如果不是,那么pStr.Replace("'","''") 这句中,"''"替换的是什么?

      

  4.   

    但是这个单引号指的是哪里的单引号
    ------
    这个单引号是pStr中的单引号...因为在SQL字符串中'号是字符串值边界符,会出错...如let's go...拼SQL字符串容易出错、安全性差、效率低下...好好学学 DbParameter 吧...
      

  5.   

    楼上的朋友的意思是不是说pStr字符串中可能会出现单引号,所以外面用两个单引号扩起来?
      

  6.   

    现在的正式项目里,很少会用拼接sql方式的。
    使用拼接sql方式,多数是个人或未成规模的公司做的事情
      

  7.   

    嗯,我是个人做开发的,我也一直使用拼接sql的方式,在我的公共函数库里也有这么个函数,很久以前就一直这样用了。