带有单引号的SQL查询

Ank*_*ain 1 .net c# sql database

执行此查询时获取错误,因为列文本也可能包含带单引号的文本.如何使用此查询没有任何错误我的代码是

public bool updateCMStable(int id, string columnName, string columnText)
{
    try
    {
        string sql = "UPDATE  CMStable SET " + columnName + 
                      "='" + columnText + "' WHERE cmsID=" + id;
        int i = SqlHelper.ExecuteNonQuery(Connection.ConnectionString,
                                          CommandType.Text,
                                          sql);
        if (i > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    catch (Exception ee)
    {
        throw ee;
    }
} 
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 5

您应该使用参数化查询而不是在字符串中构建SQL - 除了单引号问题之外,您当前的代码容易受到SQL注入攻击.

有一个限制是您尝试使用无法参数化的动态列名,但您仍然可以以更安全的方式使用动态SQL.

我建议阅读Erland Sommarskog 的"动态SQL的诅咒和祝福",以便对该主题进行全面的处理.