【发布时间】:2010-06-07 16:14:08
【问题描述】:
我正在使用 VSTS 2008 + C# + .Net 3.5 + ADO.Net。这是我的代码和相关的错误消息。错误消息说,@Param1 没有提供,但实际上它是在我的代码中提供的。有什么想法有什么问题吗?
System.Data.SqlClient.SqlException: 过程或函数“Pr_Foo”期望 参数“@Param1”,不是 提供。
class Program
{
private static SqlCommand _command;
private static SqlConnection connection;
private static readonly string _storedProcedureName = "Pr_Foo";
private static readonly string connectionString = "server=.;integrated Security=sspi;initial catalog=FooDB";
public static void Prepare()
{
connection = new SqlConnection(connectionString);
connection.Open();
_command = connection.CreateCommand();
_command.CommandText = _storedProcedureName;
_command.CommandType = CommandType.StoredProcedure;
}
public static void Dispose()
{
connection.Close();
}
public static void Run()
{
try
{
SqlParameter Param1 = _command.Parameters.Add("@Param1", SqlDbType.Int, 300101);
Param1.Direction = ParameterDirection.Input;
SqlParameter Param2 = _command.Parameters.Add("@Param2", SqlDbType.Int, 100);
portal_SiteInfoID.Direction = ParameterDirection.Input;
SqlParameter Param3 = _command.Parameters.Add("@Param3", SqlDbType.Int, 200);
portal_RoleInfoID.Direction = ParameterDirection.Input;
_command.ExecuteScalar();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
static void Main(string[] args)
{
try
{
Prepare();
Thread t1 = new Thread(Program.Run);
t1.Start();
t1.Join();
Dispose();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "\t" + ex.StackTrace);
}
}
}
提前致谢,
乔治
【问题讨论】:
-
您似乎已经清理了您的代码,以便发布查看不一致的参数名称。我怀疑您对代码的清理隐藏了实际问题。你能仔细检查一下你做了什么吗?
-
你是什么意思“检查你做了什么”?感谢您是否可以提供有关检查内容的更多详细信息? :-)
-
你有`SqlParameter Param2 = _command.....` 然后下一行是`portal_SiteInfoID.Direction = ....` - 这应该是同一个参数
Param2吗? ? -
Plus:
ParameterDirection.Input;是默认值 - 真的不需要一遍又一遍地指定。
标签: c# .net sql-server-2008 stored-procedures ado.net