C# 执行update语句为何出错

C# 执行update语句为何出错?在线等
需要用C#执行一条语句,将数据库中字段message的值中含有网址A的替换为网址B

string message_sql = @"UPDATE xhaitao_forum_post SET message=REPLACE(message,'http://haitao.smzdm.com/go_ht/270133/8','http://xxxxx.com/xxxxxx') WHERE (pid ='"+pid+"')";
                string temp = mysql.GetScalar(message_sql);


但是总是出错,不知道什么原因

我把单独的语句拿出来
放到服务器执行是可以的。

单独放到服务器执行的语句

[SQL] UPDATE xhaitao_forum_post SET message=REPLACE(message,'http://haitao.smzdm.com/go_ht/270133/8','http://xxxxx.com/xxxxxx') WHERE pid =4

受影响的行: 0
时间: 0.000s

------解决方案--------------------
GetScalar这个函数写的什么?
------解决方案--------------------
引用:
        public static string GetScalar(string sql)
        {
            MySqlCommand command = new MySqlCommand(sql, Connection);
            return command.ExecuteScalar().ToString();
        }


这个是GetScalar函数的原型


执行updateset用ExecuteNonQuery()这个。。
------解决方案--------------------
把message_sql输出看看

应该错在pid 上边
------解决方案--------------------
你的这个pid本身带了括弧导致的
------解决方案--------------------
不是你自己加的括弧吗?打个断点看看pid的值是什么?数据库里面是不是用了数字类型了,如果是,把单引号拿掉。你update语句放到sql上执行受影响的行为0 啊,没更新
------解决方案--------------------
引用:
输出结果如下
UPDATE xhaitao_forum_post SET message=REPLACE(message,'http://haitao.smzdm.com/go_ht/270133/8','http://xxxxx.com/xxxxxx') WHERE (pid ='5273')


把输出的语句放到mysql执行器中能执行吗?
------解决方案--------------------



replace后 转型.赋值.
------解决方案--------------------
错误本身就会告诉你原因,你却忽视了它。
另外拼接SQL最好少用,许多问题都由它引起。