gpt4 book ai didi

c# - SQL 查询表示未提供参数,但已添加到 SqlCommand 对象

转载 作者:IT王子 更新时间:2023-10-29 04:36:20 25 4
gpt4 key购买 nike

我有一个存储过程,它有一个名为 UserName 的参数,在我后面的代码中,我有一个 SqlCommand 对象,我使用 Add 方法将参数添加到该对象。但由于某种原因,当命令对象尝试运行 ExecuteReader 方法时,它会抛出异常。我完全不知所措,不知道为什么它不能识别参数。在运行 ExecuteReader 方法之前,我设置了一个断点,因此我可以确认命令对象确实包含正在设置的参数,这是真的。我知道当参数没有添加到命令对象时,存储过程确实返回了正确的数据,而是在实际存储过程中进行了硬编码。以下是 catch block 中给出的异常消息。我还将粘贴我的代码和存储过程的第一部分。看到我尝试了许多不同的方法都无济于事,我将不胜感激在此问题上的任何帮助。提前致谢。



异常信息

过程或函数“someStoredProcedure”需要未提供的参数“@UserName”。



代码隐藏

private DataTable GetLossMitData(string code, DateTime? start, DateTime? end)  
{
DataTable results = new DataTable();
string connectionString = ConfigurationManager.ConnectionStrings["asdf"].ConnectionString;
string userName = String.Empty;

try
{
using (SPSite site = new SPSite(ConfigurationManager.AppSettings["someName"]))
{
using (SPWeb web = site.OpenWeb())
{
userName = web.CurrentUser.Email.ToString();
}
}

using (SqlConnection connection1 = new SqlConnection(connectionString))
{
connection1.Open();
using (SqlCommand command1 = new SqlCommand("someStoredProcedure", connection1))
{
command1.Parameters.Add(new SqlParameter("@UserName", userName));
command1.Parameters.Add(new SqlParameter("@ProductCode", code));

SqlDataReader dr = command1.ExecuteReader(CommandBehavior.CloseConnection);
results.Load(dr);
}
connection1.Close();
}
}
catch (Exception ex)
{
}
return results;
}



存储过程

@UserName nvarchar(256),  
@ProductCode nvarchar(256),
@StartDate nvarchar(256) = '1/1/1900',
@EndDate nvarchar(256) = '12/30/2012'

AS
BEGIN
SET NOCOUNT ON;

Declare @UserID int

Select @UserID = Users.UserID
from Users
where Users.Email = @UserName

最佳答案

尝试确保将命令类型设置为存储过程。

mycommand.CommandType = System.Data.CommandType.StoredProcedure;

关于c# - SQL 查询表示未提供参数,但已添加到 SqlCommand 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com