2010-06-20 18 views
3

J'utilise le connecteur MySQL.Fonction d'appel MySqlCommand

using (MySqlConnection connection = new MySqlConnection("...")) 
{ 
    connection.Open(); 
    MySqlCommand command = new MySqlCommand(); 
    command.Connection = connection; 
    command.CommandType = CommandType.StoredProcedure; 
    command.CommandText = "FN_NEW"; 
    command.Parameters.AddWithValue("P_SESSION_ID", sessionId); 
    command.Parameters.AddWithValue("P_NAME", deckName); 
    object result = command.ExecuteScalar(); // returns NULL !!!!!!!!! 
    return Json(result); 
} 

Pour une raison quelconque, le valus renvoyé est nul. Est-ce que j'utilise le bon CommandType?

Comment puis-je appeler une fonction MySQL à partir de .NET?

La version finale de travail est:

using (MySqlConnection connection = new MySqlConnection(GetConnectionString().ConnectionString)) 
    { 
     connection.Open(); 
     MySqlCommand command = new MySqlCommand(); 
     command.Connection = connection; 
     command.CommandType = CommandType.StoredProcedure; 
     command.CommandText = "FN_NEW"; 
     command.Parameters.AddWithValue("P_SESSION_ID", sessionId); 
     command.Parameters.AddWithValue("P_NAME", deckName); 
     MySqlParameter returnParam = command.Parameters.Add("@RETURN_VALUE", MySqlDbType.Int32); 
     returnParam.Direction = System.Data.ParameterDirection.ReturnValue;    
     command.ExecuteNonQuery(); 
     NewDeckReturnCode result = (NewDeckReturnCode)returnParam.Value; 
     return Json(result); 
    } 

Répondre

4

Ajouter un paramètre supplémentaire à la commande avec une direction de paramètre:

System.Data.ParameterDirection.ReturnValue; 

Et utiliser

command.ExecuteNonQuery(); 

Et puis récupérer la renvoie la valeur du paramètre de valeur de retour après avoir appelé ExecuteNonQuery.