ExecuteScalar renvoie NullReferenceException

Ce code lève une NullReferenceException lorsqu'il appelle ExecuteScalar :

 selectedPassengerID = 0; //SqlCommand command = GenericDataAccess.CreateCommand(); // 2nd test ssortingng connectionSsortingng = ""; SqlConnection conn; connectionSsortingng = ConfigurationManager. ConnectionSsortingngs["ConnST-MHM"].ConnectionSsortingng; conn = new SqlConnection(connectionSsortingng); SqlCommand command = new SqlCommand(); command.CommandType = CommandType.StoredProcedure ; command.Connection = conn; command.CommandText = "SearchForPassenger"; SqlParameter param; param = command.CreateParameter(); param.ParameterName = "@name"; param.Value = pName; // Session[""]; param.DbType = DbType.Ssortingng; command.Parameters.Add(param); param = command.CreateParameter(); param.ParameterName = "@flightDate"; param.Value = date; param.DbType = DbType.Ssortingng; command.Parameters.Add(param); param = command.CreateParameter(); param.ParameterName = "@ticketNo"; param.Value = ticketNumber; param.DbType = DbType.Int32; command.Parameters.Add(param); int item; command.Connection.Open(); item = (int)command.ExecuteScalar(); 

J'ai encapsulé la plupart de ma logique SQL dans un DAL. Une de ces methods DAL tire Ints scalaires en utilisant la logique suivante. Cela peut fonctionner pour vous:

  object temp = cmnd.ExecuteScalar(); if ((temp == null) || (temp == DBNull.Value)) return -1; return (int)temp; 

Je sais que vous avez entré beaucoup de code ci-dessus mais je pense que c'est vraiment l'essence de votre problème. Bonne chance!

ExecuteScalar renvoie null si aucun logging n'a été renvoyé par la requête (par exemple, lorsque votre procédure stockée SearchForPassenger ne renvoie aucune ligne).

Donc cette ligne:

 item = (int) command.ExecuteScalar(); 

Essaie de lancer null à un int dans ce cas. Cela va NullReferenceException une NullReferenceException .

Selon la réponse de Mark qui vient d'apparaître, vous devez vérifier null :

 object o = command.ExecuteScalar(); item = o == null ? 0 : (int)o;