日期:2014-05-18  浏览次数:20438 次

try{}catch{}异常问题?
程序中用到了
try{}catch{}语句,
如下代码:

  try
  {
  string carid = Request.QueryString["id"].ToString();

  string sql = "*******";

  if (Convert.ToInt32(dll.Query(sql).Rows.Count) == 1)
  {
  lblBname.Text = dll.Query(sql).Rows[0][0].ToString();
  }
  }
  catch
  {
  Response.Write("<script>history.go(-1);</script>");
  }

在正常的链接情况下,正常获取到carid的值,但如果在地址栏上id=5的后头加上个'号的话,会提示不能把nvarchar值转成列int型...我都有用try{}catch{}来获取异常了,为何不是执行catch{}里头的语句?谢谢

------解决方案--------------------
将'替换成空,同时也防止sql注入
------解决方案--------------------
if (Convert.ToInt32(dll.Query(sql).Rows.Count) == 1) 

改为 int i=Convert.ToInt32(dll.Query(sql).Rows.Count);
if(i==1)
------解决方案--------------------
探讨
楼上的,还是照样提示出错:

异常详细信息: System.Data.SqlClient.SqlException: 将 nvarchar 值 '14'' 转换为数据类型为 int 的列时发生语法错误。