从文本替换单引号时出错

时间:2011-11-18 12:01:59

标签: c# asp.net

我有一个带有tinyMCE编辑器的文本框,我从该文本框中用单引号给出一些文本,但在查询中它显示语法错误

我正在尝试删除此

的单引号
txbCaption.Text = txbCaption.Text.Replace("'", "''");

和我的查询

public void UpdateCaptions(Hashtable hashtable)
        {
            if (hashtable != null)
            {
                foreach (int key in hashtable.Keys)
                {
                    string query = "update Image set Description='" + hashtable[key] + "' where Id=" + key;
                    // in this query i am getting error
                    SqlHelper.ExecuteNonQuery(Conn, CommandType.Text, query);
                }
            }
       }

首先我调用替换Text.Replace(“'”,“''”);
之后我将此分配给

if (ViewState["imgIdCapHtbl"] != null)
     imgIdCapHtbl = (Hashtable)ViewState["imgIdCapHtbl"];
int index = Convert.ToInt32(ViewState["pSelecectedImgIndex"]);

if (imgIdCapHtbl != null && imgIdCapHtbl.ContainsKey(imgIds[index]))
         imgIdCapHtbl[imgIds[index]] = txbCaption.Text;

和imgIdCapHtbl哈希表键我发送查询以保存描述

当我在我的文本中给出单引号然后在查询中2次单引号被添加。

我使用常规exp。验证也是因为TinyMCE编辑器不能为此工作。

有一个plz告诉我如何替换单引号,我想如果用户想要单独使用文本然后文本框应该接受单引号并且我的数据保存没有任何错误,

1 个答案:

答案 0 :(得分:2)

不要以这种方式构建SQL字符串;你已经打开了自己的SQL注入。最理想的是,使用带参数的存储过程。您还可以使用参数化查询,例如:

string query = "update Image set Description=@description where Id=@id";

然后将参数添加到SQLCommand,如下所示:

commandToExecute.Parameters.AddWithValue("@description",hashtable[key]);
commandToExecute.Parameters.AddWithValue("@id",key);