ExecuteScalar appel jeter exception “la référence d'Objet n'est pas définie à une instance d'un objet”
Lors du débogage de la la méthode suivante dans une unité de test j'obtiens l'erreur suivante
Objet de référence non définie à une instance d'un objet
au moment de taper la ligne suivante
result = (int)validateDatabase.ExecuteScalar();
La méthode est
public static Boolean Validate(string argument1, string argument2)
{
int result = -1;
using (var connection = new SqlConnection("connection string"))
{
SqlCommand validateDatabase = new SqlCommand("PROCEDURE NAME", connection);
validateDatabase.CommandType = System.Data.CommandType.StoredProcedure;
validateDatabase.Parameters.Add("@PARAMETER1", System.Data.SqlDbType.NVarChar).Value = argument1;
validateDatabase.Parameters.Add("@PARAMETER2", System.Data.SqlDbType.NVarChar).Value = argument2;
try
{
connection.Open();
result = (int)validateDatabase.ExecuteScalar();
}
catch (SqlException exception) { Trace.WriteLine("exception.Message); }
finally { connection.Close(); }
}
return (int)result == 0 ? true : false;
}
Vous devriez avoir le var
C'est déjà le cas, j'ai fait l'erreur d'utiliser une varialbe nom comme un lieu nom du titulaire, j'ai modifié cette maintenant
connection = new SqlConnection(hereComesTheConnectionString)
C'est déjà le cas, j'ai fait l'erreur d'utiliser une varialbe nom comme un lieu nom du titulaire, j'ai modifié cette maintenant
OriginalL'auteur beaumondo | 2013-11-21
Vous devez vous connecter pour publier un commentaire.
ExecuteScalar
retourner la valeur null si le résultat est null selon MSDN. Cela signifie que votre plâtre est pas valideVoir ici pour la documentation SqlCommand.ExecuteScalar
Si vous voulez que le cast de travail de le changer pour un nullable
int
selon la documentation, il retourne
The first column of the first row in the result set, or a null reference (Nothing in Visual Basic) if the result set is empty.
Donc je suis en supposant que votre résultat est vide.avez-vous réussi à faire un tri?
Nan toujours pas de travail. Dans la db fenêtre de requête, le résultat n'est jamais null, toujours à -1 ou 0. Comme une fonction d'agrégation
OriginalL'auteur David Pilkington
J'ai juste connu un problème similaire. Ce que j'ai fait a été de sélectionner une colonne int à partir d'un enregistrement dans une table, mais il est arrivé la valeur de cette colonne est de 0. Procédant de la manière suivante a provoqué l'exception de “la référence d'Objet n'est pas définie à une instance d'un objet”:
Ma solution a été de changer le code ci-dessus:
Ce qui permettrait d'éviter l'exception.
OriginalL'auteur LaBird
Vous font plutôt mal - essayez d'appeler
SqlDataReader
pourvalidateDatabase.ExecuteScalar()
résultatsOriginalL'auteur
OriginalL'auteur Cihan TT