welcome5
2016-06-29 02:59
采纳率: 0%
浏览 1.5k

C#调用存储过程,获取异常信息问题

C#的代码如下:
try
{
//调用存储过程
cmd.ExecuteNonQuery();
strErr = cmd.Parameters["@ErrMsg"].value.tostring();//strErr 是存储过程的输出参数
}
catch(Exception e)
(
strErr = e.Message.ToString();
return;
)
测试情况:我通过存储过程往数据库中插入一条重复的记录(已设置主键),调试存储过程时,输出参数strErr的错误消息大概为违反表的主键唯一性约束;但是在C#调试,执行ExecuteNonQuery()后,就跳入catch语句中,strErr的错误消息为Error converting data type nvarchar to int.为什么错误不一样呢?谁能帮我解释下原因,折腾了好几天???

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • yicp123 2016-06-29 03:17

    你先手动调下你的存储过程,看存储过程是否抛出异常,如果存储过程调用没有问题,那是不是你的外部程序异常
    参考自:
    MySQL存储过程详解 http://www.data.5helpyou.com/article314.html

    打赏 评论
  • welcome5 2016-07-08 08:38

    谢谢你们热心的回答,原因在于我在c#传入存储过程的类型,有的DBType、SqlDbType,统一成一种类型,就可以输出存储过程的报错信息。

    打赏 评论

相关推荐 更多相似问题