Probleme Retour parametre Procedure stockée

hawk13120 Messages postés 10 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 10 mai 2005 - 8 mars 2005 à 22:51
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 - 10 mars 2005 à 00:50
Au Secours,
Voila mon probleme
j'ai une procedure stockée qui verifie si le login et le mot de passe entrés sont correct
elle doit me renvoyer l'identifiant de l'utilisateur si elle le trouve dans ma table sinon elle me renvoie -1
Voila le code :

<HR>CREATE PROCEDURE IsValidLogon (
@login varchar(50) ,
@password varchar(50)
) AS BEGIN
DECLARE @id int

SET @id = (SELECT idUser FROM T_Users
WHERE Login=@login AND Password=@password)

IF @id IS NULL BEGIN
RETURN -1
END ELSE BEGIN
UPDATE T_Users SET ConnectionNumber=ConnectionNumber+1
WHERE idUser = @id;
RETURN @id
END
END<HR>
Maintenant mon souci est que tous fonctionne en mode ConsoleApplication
mais pas en mode WindowsApplication

En mode ConsoleApplication (Tous fonctionne):

<HR>

Console.Out.Write("Entrez votre login : ");

String login = Console.In.ReadLine();

Console.Out.Write("Entrez votre password : ");

String password = Console.In.ReadLine();

SqlConnection conn =
null;

try

{


// Connexion à la base de données

conn =
new SqlConnection();

String strConnection = "Data Source=Serveur;"

+ "Initial Catalog=NomBDD;"

+ "User Id=LOGIN;Password=MDP";

conn.ConnectionString = strConnection;

conn.Open();

Console.Out.WriteLine("Connection établie");


// Préparation de la commande (Procédure stockée)

SqlCommand command =
new SqlCommand();

command.CommandType = CommandType.StoredProcedure;

command.CommandText = "IsValidLogon";

command.Connection = conn;


// Préparation des paramètres de la procédure stockée

SqlParameter prmReturn =
null;

prmReturn =
new SqlParameter("@RETURN_VALUE", SqlDbType.Int, 4);

prmReturn.Direction = ParameterDirection.ReturnValue;

command.Parameters.Add(prmReturn);


SqlParameter prmLogin =
null;

prmLogin =
new SqlParameter("@login", SqlDbType.VarChar, 50);

prmLogin.Direction = ParameterDirection.Input;

prmLogin.Value = login;

command.Parameters.Add(prmLogin);


SqlParameter prmPassword =
null;

prmPassword =
new SqlParameter("@password", SqlDbType.VarChar, 50);

prmPassword.Direction = ParameterDirection.Input;

prmPassword.Value = password;

command.Parameters.Add(prmPassword);


// Exécution de la prcédure stockée (-1 => non authentifié)

command.ExecuteNonQuery();

Console.Out.WriteLine("User ID == " +

command.Parameters["@RETURN_VALUE"].Value);

Console.Out.WriteLine("--------------------------------------");



}

catch(SqlException exc)

{

Console.Error.WriteLine(exc.ToString());

Console.Error.WriteLine(exc.StackTrace);

}

finally

{

// Fermeture de la connexion

conn.Close();

Console.Out.WriteLine("Connection terminée");

}

<HR>
Mais dès que je veut essayer de faire tourner ce code en mode WindowsApplication
ca marche pas, je souhaiterai affciher dans un messageBox la valeur du parametre
que la procedureme renvoie :

command.Parameters["@RETURN_VALUE"].Value;

Mais j'ai toujours l'erreur suivante :

"Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet."


Aidez moi j'en tout essayer meme en appelant le nom du parametre et ca marche pas, meme erreur:
prmReturn.Value.ToString();

Merci

1 réponse

cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
10 mars 2005 à 00:50
Essaye sans @ à "@RETURN_VALUE"...

@ est pour nommer une variable, mais celle ci n'a pas de nom réel pour SQL Serv....

A++

Crazyht
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]
0
Rejoignez-nous