过程 'Proc_UserAnswer' 需要参数 '@UserID',但未提供该参数。

gdjlc 2008-05-19 02:46:32
请大家用帮我看看.过程 'Proc_UserAnswer' 需要参数 '@UserID',但未提供该参数。是不是下面的存储过程哪里错了??

UserID= '+@UserID +'这么写有没有错啊??

-------------------------------------------
CREATE PROCEDURE [dbo].[Proc_UserAnswer]
(@PaperID int,
@Type varchar(10),
@UserID varchar(50))
AS
begin
declare @sql nvarchar(1000)
if @Type='单选题'
begin
set @sql='select * from UserAnswer,SingleProblem
where [Type]=''单选题'' and
UserAnswer.TitleID=SingleProblem.ID and UserID= '+@UserID +' and
[PaperID]= '+Cast(@PaperID AS varchar(10))
exec sp_executesql @sql
end
else if @Type='多选题'
begin
set @sql='select * from UserAnswer,MultiProblem
where [Type]=''多选题'' and
UserAnswer.TitleID=MultiProblem.ID and UserID= ' +@UserID +' and
[PaperID]= ' +Cast(@PaperID AS varchar(10))
exec sp_executesql @sql
end
end
GO


--------------------------------------------
堆栈跟踪:


[SqlException (0x80131904): 过程 'Proc_UserAnswer' 需要参数 '@UserID',但未提供该参数。]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +857322
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +734934
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +188
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1838
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +31
System.Data.SqlClient.SqlDataReader.get_MetaData() +62
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +886
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +132
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +7
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +141
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +137
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +86
OnLineExam.DataAccessLayer.DataBase.GetDataSet(String ProcName, SqlParameter[] Params) in c:\Inetpub\wwwroot\OnLineExam\App_Code\DataAccessLayer\DataBase.cs:301
Web_UserPaper.InitData() in c:\Inetpub\wwwroot\OnLineExam\Web\UserPaper.aspx.cs:50
Web_UserPaper.Page_Load(Object sender, EventArgs e) in c:\Inetpub\wwwroot\OnLineExam\Web\UserPaper.aspx.cs:26
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061


...全文
595 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdjlc 2008-05-19
  • 打赏
  • 举报
回复
多谢大家的指点,特别是songhuan 的热心帮助,问题已经解决了,我原来的代码是没问题的,只是我在下面存储过程写多了1个左括号,我把where [Type]=''问答题'' and 不小心写成了where ( [Type]=''问答题'' and 等,虽然语法检查成功,但最后结果老是出错,终于可以睡个安稳觉了..



---------------------------------------

CREATE PROCEDURE [dbo].[Proc_UserAnswer]
(@PaperID int,
@Type varchar(10),
@UserID varchar(50))
AS
begin
declare @sql nvarchar(1000)
if @Type='单选题'
begin
set @sql='select * from UserAnswer,SingleProblem
where [Type]=''单选题'' and
UserAnswer.TitleID=SingleProblem.ID and [PaperID]= ' +Cast(@PaperID AS varchar(10)) + ' and
[UserID]= ' + @UserID
exec sp_executesql @sql

end
else if @Type='多选题'
begin
set @sql='select * from UserAnswer,MultiProblem
where [Type]=''多选题'' and
UserAnswer.TitleID=MultiProblem.ID and [PaperID]= ' +Cast(@PaperID AS varchar(10)) + ' and
[UserID]= ' + @UserID
exec sp_executesql @sql
end
else if @Type='判断题'
begin
set @sql='select * from UserAnswer,JudgeProblem
where [Type]=''判断题'' and
UserAnswer.TitleID=JudgeProblem.ID and [PaperID]= ' +Cast(@PaperID AS varchar(10)) + ' and
[UserID]= ' + @UserID
exec sp_executesql @sql
end
else if @Type='填空题'
begin
set @sql='select * from UserAnswer,FillBlankProblem
where [Type]=''填空题'' and
UserAnswer.TitleID=FillBlankProblem.ID and [PaperID]= ' +Cast(@PaperID AS varchar(10)) + ' and
[UserID]= ' + @UserID
exec sp_executesql @sql
end
else if @Type='问答题'
begin
set @sql='select * from UserAnswer,QuestionProblem
where [Type]=''问答题'' and
UserAnswer.TitleID=QuestionProblem.ID and [PaperID]= ' +Cast(@PaperID AS varchar(10)) + ' and
[UserID]= ' + @UserID
exec sp_executesql @sql
end

end
GO
anlen26 2008-05-19
  • 打赏
  • 举报
回复
调试监控Params1[2] = DB.MakeInParam("@UserID", SqlDbType.VarChar, 50, userid); 里的userid,应该是null了,检查userid变量的赋值
songhuan 2008-05-19
  • 打赏
  • 举报
回复
string Type="单选题";
string UserID=1;
int PaperID = Convert.ToInt32(Request.QueryString["PaperID"].ToString());

SqlConnection Connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
Connection.Open();
//SqlCommand cmd1 = new SqlCommand("Proc_UserAnswer", Connection);
SqlCommand cmd1 = new SqlCommand(Connection);
cmd1.CommandText="exec Proc_UserAnswer @PaperID="+PaperID+" ,@Type='"+Type+"',@UserID='"+UserID+"'";
//cmd1.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
DataSet ds1 = new DataSet();
da1.Fill(ds1);
GridView1.DataSource = ds1;
GridView1.DataBind();
gdjlc 2008-05-19
  • 打赏
  • 举报
回复
songhuan (烟花公子)大哥,能不能说详细点,我刚学不久,很多东西不懂的.
string cmd="exec Proc_UserAnswer @PaperID="+PaperID+" ,@Type='"+TypeCode+"',@UserID='"+UserID+"'";
这句应该放在下面代码什么地方呢?在线急等,谢了.....

------------------------------------------------
string Type="单选题";
string UserID=1;
int PaperID = Convert.ToInt32(Request.QueryString["PaperID"].ToString());

SqlConnection Connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
Connection.Open();
SqlCommand cmd1 = new SqlCommand("Proc_UserAnswer", Connection);
cmd1.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
DataSet ds1 = new DataSet();
da1.Fill(ds1);
GridView1.DataSource = ds1;
GridView1.DataBind();
songhuan 2008-05-19
  • 打赏
  • 举报
回复
调用的时候可以简单这样写,

exec Proc_UserAnswer @PaperID=1 ,@Type='a',@UserID='ppp'

int PaperID=1;
string TypeCode="a";
string UserID="ppp";
string cmd="exec Proc_UserAnswer @PaperID="+PaperID+" ,@Type='"+TypeCode+"',@UserID='"+UserID+"'";

gdjlc 2008-05-19
  • 打赏
  • 举报
回复
我已经调用存储过程了,
DataBase DB = new DataBase();
SqlParameter[] Params1 = new SqlParameter[3];
Params1[0] = DB.MakeInParam("@PaperID", SqlDbType.Int, 4, PaperID);
Params1[1] = DB.MakeInParam("@Type", SqlDbType.VarChar, 10, "单选题");
Params1[2] = DB.MakeInParam("@UserID", SqlDbType.VarChar, 50, userid);
DataSet ds1 = DB.GetDataSet("Proc_UserAnswer", Params1);
GridView1.DataSource = ds1;
GridView1.DataBind();
------------------------------------
存储过程语法检查是成功的,UserID= @UserID这句最后也是提示需要参数 '@UserID', 请大家再帮帮忙....
anheizhizi 2008-05-19
  • 打赏
  • 举报
回复
你程序里添加了@UserID了么?
周公 2008-05-19
  • 打赏
  • 举报
回复
调用这个存储过程的时候没有给它传参数值。
wxg22526451 2008-05-19
  • 打赏
  • 举报
回复
UserID= '+@UserID +'这么写有没有错啊??
------->
UserID= @UserID

另外程序中调用此存储过程,
也得注意传入这个参数,并赋值
Jinglecat 2008-05-19
  • 打赏
  • 举报
回复
给Command添加过程参数了吗?

mySqlCommand.Parameters.Add("@UserID", SqlDbType.Varchar, 50).Value = "Hello911";
内容概要:本文档围绕水声网络(UAN)仿真中的信道建模展开,提供了基于Matlab的代码实现方案,旨在帮助科研人员构建和理解水声通信系统的仿真环境。文档不仅聚焦于信道建模的核心技术,还系统性地整合了智能优化算法、机器学习、图像处理、路径规划、无人机应用、信号处理、电力系统管理等多个前沿科研方向的技术方法与实际案例。涵盖的具体算法包括遗传算法、粒子群优化(PSO)、神经网络、卡尔曼滤波、支持向量机、极限学习机、卷积神经网络等,并深入探讨其在通信系统仿真中的应用。文档强调“借力”科研理念,倡导利用成熟的算法工具与仿真平台提升研究效率,并提供了丰富的配套资源,包括百度网盘链接和微信公众号入口,便于读者获取完整的代码、仿真模型及相关论文资料,全面支持科研复现与创新。; 适合人群:具备一定Matlab编程基础,从事通信工程、信号与信息处理、水声工程、自动化控制、电子信息、电力系统、无人机技术等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习并复现水声网络信道建模的Matlab仿真流程;② 探索智能优化算法、机器学习、路径规划等技术在通信与多学科交叉系统仿真中的集成应用;③ 获取可用于科研项目的高质量算法代码、仿真案例与复现资源,加速课题研究进程,提升科研创新能力与论文发表水平。; 阅读建议:建议读者按照文档推荐的主题顺序逐步学习,优先聚焦自身研究方向的相关内容,并结合网盘提供的完整资源进行代码实践、仿真调试与结果验证,以实现理论理解与动手能力的双重提升,充分发挥本资源在科研攻关中的支撑作用。
代码下载链接: https://pan.quark.cn/s/b27638adc362 在工业自动化监控领域中,WinCC 被视为一种常用的可视化软件,其功能在于构建人机界面(HMI)以及SCADA系统。本资料将阐释在WinCC环境下如何构建一个展现管道中流体流动的动态效果,此功能主要通过C动作脚本来完成。在此过程中,我们需要构建两个矩形,分别标记为 rec1 和 rec2。这两个矩形的高度相等,但 rec1 的宽度要小于 rec2。在具体实施时,rec1 将作为展示流体运动的可见单元,而 rec2 则作为辅助元素,尽管其“显示”属性被设为关闭,但在程序执行期间,其属性参数对流体动画的表现起着决定性作用,因为 rec2 与 rec1 的宽度差将决定流体每次移动的长度。 随后,我们需要将 rec1 和 rec2 整合为一个自定义对象。在自定义对象的属性配置中,应包含 rec1.Left、rec1.Width、rec1.Visible 和 rec2.Width 这些核心属性。这些属性将有助于在C脚本中精确控制对象的位置和可见状态,以达成流体运动的视觉效果。同时,用户可根据实际需求增加其他属性,以增强自定义对象的功能性。 在自定义对象的C脚本部分,我们设定了一个周期为“250ms”的触发器。该脚本的核心职责是计算并更新流体块的位置。借助 GetPropBOOL、GetPropWord 和 GetLeft 函数,我们可以获取对象的当前状态,涵盖其可见性、位置及宽度等参数。在循环操作中,流体块(rec1)将向右移动 rec2 - rec1 的距离,一旦流体块移出显示范围(即 rec1 的右边界达到或超过 rec2 的左边界),它将重新回到起始位置,从而形成流体持续流动的模...
内容概要:本文围绕“电力系统黑启动+负荷恢复研究”展开,基于Matlab代码实现,系统阐述了电力系统在全网失电后的恢复机制,重点研究黑启动过程中的关键环节,包括启动电源的选取、关键路径的恢复顺序、发电机组的重启时序安排以及重要负荷的优先级划分。通过建立完整的数学模型并结合Matlab编程进行仿真,实现了对黑启动策略与负荷恢复过程的协同优化,有效验证了所提方案的技术可行性与恢复效率,为保障电力系统极端故障后的快速、安全、有序恢复提供了理论依据和实践参考。; 适合人群:具备电力系统分析基础、熟悉Matlab编程工具的高校研究生、从事电力系统运行、调度与安全稳定控制的科研人员及工程技术人员。; 使用场景及目标:① 深入理解电力系统黑启动的基本原理、技术难点与实施流程;② 掌握并复现黑启动过程中机组启动与负荷恢复的协同优化建模方法;③ 利用Matlab平台开展电力系统恢复策略的仿真分析、算法开发与方案验证。; 阅读建议:建议读者结合文中提供的Matlab代码,对照黑启动的理论步骤进行逐行调试与仿真运行,深入理解各模块的功能设计与参数设置,同时可尝试引入更多实际运行约束(如网络拓扑限制、设备爬坡率等)以进一步提升模型的实用价值。

62,270

社区成员

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

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

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

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