Update set where 语句有错误,提醒字符串格式不正确

bysjg 2012-05-24 10:55:40
 string id = Request.QueryString["MessageID"];
if (id != "")
{
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=" + int.Parse(Page.Request["MessageID"].ToString()) ;
dbObj.ExecNonQuery(StrSql);
Response.Write("<script>alert('回复成功!')</script>");
Response.Redirect("MessageBoard.aspx");
}
else
{
Response.Redirect("MessageBoard.aspx");
}

在if语句之前设了断点,执行if条件时是跳到了string StrSql ,是否代表if条件不为空,那为什么执行出来,显示string StrSql 取到的数据为空呢?
...全文
531 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-05-25
  • 打赏
  • 举报
回复
string StrSql = "update tb_Message set [UserName]='" + Session["UserName"].ToString() + "' where MessageID=" + int.Parse(Page.Request["MessageID"].ToString().Trim()) ;
这样不就可以看字段UserName格式正不正确?当然你要保证Page.Request["MessageID"].ToString().Trim()这个是字符串类型数字
bysjg 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]
引用 17 楼 的回复:

引用 15 楼 的回复:
你断点后把这个字符串添加监视 复制下然后发出来瞧瞧

断点后运行到string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "',HF_Content='" + this.FCKeditor1.Value + "',HF_……
[/Quote]
这个应该怎么分成一句一句的呢?
bysjg 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
参数化 对数值 先判断 再给参
[/Quote]
我不太会用参数化,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());

提示cmd未定义
bysjg 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
设断点把最后的sql语句发来看看
[/Quote]
设置断点运行到这一句时进行不下去了。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=" + int.Parse(Page.Request["MessageID"].ToString().Trim()) ;提示输入字符串的格式不正确。Make sure your method arguments are in the right format。
EnForGrass 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

引用 15 楼 的回复:
你断点后把这个字符串添加监视 复制下然后发出来瞧瞧

断点后运行到string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "',HF_Content='" + this.FCKeditor1.Value + "',HF_IP='" + Reques……
[/Quote]
你可以一个一个字段调试看看到底哪个字段的值格式不正确???
ycproc 2012-05-25
  • 打赏
  • 举报
回复



参数化 对数值 先判断 再给参
bysjg 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
你断点后把这个字符串添加监视 复制下然后发出来瞧瞧
[/Quote]
断点后运行到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=" + int.Parse(Page.Request["MessageID"].ToString().Trim()) ;输入字符串的格式不正确。Make sure your method arguments are in the right format。
lichanyon 2012-05-25
  • 打赏
  • 举报
回复
设断点把最后的sql语句发来看看
紫魂一号 2012-05-25
  • 打赏
  • 举报
回复
你断点后把这个字符串添加监视 复制下然后发出来瞧瞧
紫魂一号 2012-05-25
  • 打赏
  • 举报
回复
很有可能出现了异常 ,比如说int.Parse(Page.Request["MessageID"].ToString())这个转型失败
建议用try{}catch{}调试下
bysjg 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
其实就是字符串为null 了

if(Request.QueryString["MessageID"]==null||Request.QueryString["MessageID"].ToString()=="")
return;
string id= Request.QueryString["MessageID"].ToString();

if (id != "")
{
……
[/Quote]
 if (Request.QueryString["MessageID"] == null || Request.QueryString["MessageID"].ToString() == "")
return;
string id = Request.QueryString["MessageID"].ToString();



if (id != "")
{
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=" + int.Parse(Page.Request["MessageID"].ToString().Trim()) ;
dbObj.ExecNonQuery(StrSql);
Response.Write("<script>alert('回复成功!')</script>");
Response.Redirect("MessageBoard.aspx");
}
else
{
Response.Redirect("MessageBoard.aspx");
}
}

运行到SQL语句时提示输入字符串的格式不正确
IT_2007 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
其实就是字符串为null 了

[color=#FF0000]if(Request.QueryString["MessageID"]==null||Request.QueryString["MessageID"].ToString()=="")[/color]return;
string id= Request.QueryString["MessageID"].ToString();

if (id != "")
{
……
[/Quote]
xuan.ye 2012-05-25
  • 打赏
  • 举报
回复
其实就是字符串为null 了

if(Request.QueryString["MessageID"]==null||Request.QueryString["MessageID"].ToString()=="")
return;
string id= Request.QueryString["MessageID"].ToString();

if (id != "")
{
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=" + int.Parse(Page.Request["MessageID"].ToString()) ;
dbObj.ExecNonQuery(StrSql);
Response.Write("<script>alert('回复成功!')</script>");
Response.Redirect("MessageBoard.aspx");
}
else
{
Response.Redirect("MessageBoard.aspx");
}

AI观星台 2012-05-25
  • 打赏
  • 举报
回复
直接调试,看看StrSql 的值是什么。
紫魂一号 2012-05-25
  • 打赏
  • 举报
回复
实在不行,将这些参数先一个个赋给变量,再使用变量。。调试的时候看看每个变量有什么异常没
hebingyu 2012-05-25
  • 打赏
  • 举报
回复
if (Request.QueryString["MessageID"]!=null)
{
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.QueryString["MessageID"] +"'";
dbObj.ExecNonQuery(StrSql);
Response.Write("<script>alert('回复成功!');location='MessageBoard.aspx'</script>");
}
else
{
Response.Redirect("MessageBoard.aspx");
}

104915562 2012-05-25
  • 打赏
  • 举报
回复
调试。。。。。。
紫魂一号 2012-05-25
  • 打赏
  • 举报
回复
呵呵不好说了,多多练习哈,多多调试,看监视后的结果。你看看你所有参数的值是什么,方便的话都给贴出来瞧瞧
暖枫无敌 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:
引用 6 楼 的回复:

引用 4 楼 的回复:
string id = Request.QueryString["MessageID"];
if (id != "")
{
string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "',HF_……
[/Quote]
怎么你前后不一致啊

MessageID是int类型还是varchar类型的??

是int类型的话,不需要加一对单引号

是varchar的话,可能不能转换成int的

如果是int类型的话:
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=" + int.Parse(Page.Request["MessageID"].ToString().Trim()) ;

如果是varchar类型的话:
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='" + Page.Request["MessageID"].ToString().Trim()+"'" ;



bysjg 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 6 楼 的回复:

引用 4 楼 的回复:
string id = Request.QueryString["MessageID"];
if (id != "")
{
string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "',HF_Content='" + th……
[/Quote]
我放到查询器里执行SQL语句,提示错误信息:在将varchar值'" + int.Parse(Page.Request["MessageID"].ToString()) +"'转换成数据类型int时失败
加载更多回复(7)

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧