牛腩新闻发布--过程或函数 'news_selectByCaId' 需要参数 '@caid',但未提供该参数(一)

发现问题

今天敲击牛腩,在敲击Web页面的List.aspx之后,点击Ctrl+F5运行,发现运行不了,首先是数据库中调取数据有问题,因为这个数据是用存储过程调取的,所以需要修改存储过程,这时候只需要改成如下代码就行:

这里写图片描述

将这个更改完之后就可以在数据库中调取到应需要的数据了,但是这只是一个开始,在修改完这个之后,我继续运行List.aspx,然后给我报出了“过程或函数 ‘news_selectByCaId’ 需要参数 ‘@caid’,但未提供该参数。”这个错误;如下

这里写图片描述

分析问题

网上有很多答案,有的说是不是没有用到cmd,但是从代码中就可已看出cmd是有用到的。所以这方面的解决方案直接给排除。那么究竟是什么情况呢?

解决问题

在数据库中,我们新建查询的时候使用如下代码:

exec news_selectByCaId 29

就能得出如下内容:

这里写图片描述

可以从图中看出,caId有被调取出来的,这说明数据库中存储过程中的代码是没有错误的,但是细心的一定会发现,上面调取数据的时候后面有输入一个数值 ‘29’ ,所以我们可以直接在数据库中找寻到caId为‘29’下的所有数据,所以,问题就出现在这里。

最后总结

在直接启动List.aspx窗体时没有传入参数@caid,所以就报错,这个时候你只需要打开首页Default.aspx,然后从首页进入到List.aspx页面就能顺利打开List.aspx。只有在没有传入参数的情况下才会报出错误。
过程或函数 ‘news_selectByCaId’ 需要参数 ‘@caid’,但未提供该参数。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 过程或函数 ‘news_selectByCaId’ 需要参数 ‘@caid’,但未提供该参数。
源错误:
行 134: cmd.CommandType = ct;
行 135: cmd.Parameters.AddRange(paras);
行 136: using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) //Using的用法是在执行该命令的时候,如果关闭关联的DataReader对象,则关联的Connection对象也将关闭
行 137: {
行 138: dt.Load(sdr);
源文件: c:\Users\ITLuoxiaojun\Desktop\牛腩新闻发布\牛腩新闻发布\DAL\SQLHelper.cs 行: 136
堆栈跟踪:
[SqlException (0x80131904): 过程或函数 ‘news_selectByCaId’ 需要参数 ‘@caid’,但未提供该参数。]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) +266
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction) +98
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +986
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +6512
System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +210
System.Data.SqlClient.SqlDataReader.get_MetaData() +177
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption) +513
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) +4306
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) +1179
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +136
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +361
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) +116
DAL.SQLHelper.ExecuteQuery(String cmdText, SqlParameter[] paras, CommandType ct) in c:\Users\ITLuoxiaojun\Desktop\牛腩新闻发布\牛腩新闻发布\DAL\SQLHelper.cs:136
DAL.NewsDAO.SelectByCaId(String caid) in c:\Users\ITLuoxiaojun\Desktop\牛腩新闻发布\牛腩新闻发布\DAL\NewsDAO.cs:66
BLL.NewsManager.SelectByCaId(String caid) in c:\Users\ITLuoxiaojun\Desktop\牛腩新闻发布\牛腩新闻发布\BLL\NewsManager.cs:55
Web.List.Page_Load(Object sender, EventArgs e) in c:\Users\ITLuoxiaojun\Desktop\牛腩新闻发布\牛腩新闻发布\Web\List.aspx.cs:19
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +188
System.Web.UI.Control.OnLoad(EventArgs e) +165
System.Web.UI.Control.LoadRecursive() +170
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3608
版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.7.2623.0

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值