J'utilise VSTS 2008 + C# + .Net 3.5 + ADO.Net. Voici mon code et le message d'erreur associé. Le message d'erreur dit, @ Param1 n'est pas fourni, mais en fait il est fourni dans mon code. Des idées ce qui ne va pas?Erreur lors de l'appel de la procédure stockée avec le paramètre d'entrée de ADO.Net
System.Data.SqlClient.SqlException: paramètre procédure ou la fonction 'Pr_Foo' attend '@ Param1', qui n'a pas été fourni .
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);
}
}
}
Merci à l'avance,
George
Vous semblez avoir aseptisé votre code pour l'affichage regardant les noms des paramètres incompatibles. Je soupçonne que votre aseptisation du code a caché le problème réel. Pouvez-vous vérifier ce que vous avez fait? –
Que voulez-vous dire "vérifiez ce que vous avez fait"? Appréciez si vous pouviez fournir plus de détails sur ce qu'il faut vérifier? :-) – George2
vous avez 'SqlParameter Param2 = _command .....' et ensuite la ligne suivante indique 'portal_SiteInfoID.Direction = ....' - est-ce supposé être le même paramètre 'Param2' ?? –