VS2008+SQL Server2005 C# 更新数据库中的数据时,提示语法错误,怎么改呢?
string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "',HF_Content='" +
this.FCKeditor1.Value + "',HF_IP='" + Request.UserHostAddress.ToString() + "',HF_Time='" + DateTime.Now.ToString() + "' where MessageID=" + Request["id"];
进行数据库更新时,提示“=”附近有语法错误。这条语句到底哪里错了呢?
------解决方案--------------------MessageID=" + Request["id"]估计是这里,因为这里有可能是null或者不是数字类型,即使是数字类型你也还是用Convert.ToInt32(Request["id"])更好,你断点试试
------解决方案--------------------将StrSql提到查询分析器中执行,一眼就看出来了。。。
估计this.FCKeditor1.Value中值有问题,可能有'符号
------解决方案--------------------使用参数化的语法,安全性和错误都很少出现
string StrSql = "update tb_Message set UserName=@UserName,HF_Content=@HF_Content,HF_IP=@HF_IP,HF_Time=@HF_Time where MessageID=@MessageID";
cmd.Parameters.AddWithValue("@UserName",Session["UserName"].ToString());
其他做法类似
------解决方案--------------------这是sql语句错误,你
Response.Write(StrSql )
看是什么啊
------解决方案--------------------MessageID字段是数字类型,不要加引号
------解决方案--------------------估计是this.FCKeditor1.Value里面的内容含有引号,导致构造的SQL语句出现错误
你可以用一个简单的字符串如:1234567890来测试一下。
建议使用调用存储过程的方式来执行SQL语句,即Parameters.Add的方式
------解决方案--------------------string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "',HF_Content='" +
this.FCKeditor1.Value + "',HF_IP='" + Request.UserHostAddress.ToString() + "',HF_Time='" + DateTime.Now.ToString() + "' where MessageID=" + Request["id"];
在后面加上Response.Write(strSQL);
Response.End();
------解决方案-------------------- string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "' where MessageID='"+Request["id"]+"'";
上面这个运行下看下,看报什么错,如果是类型问题 就换下
string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "' where MessageID='"+Convert .ToInt32 ( Request["id"].ToString ())+"'";