J'ai effectué quelques recherches avant de publier cette question et je suis conscient du fait que lorsqu'aucune donnée n'est renvoyée, ExecuteScalar lève une exception System.NullReferenceException. C'est pourquoi j'ai modifié mon proc stocké pour "return 1" afin de garantir une valeur de retour. Cependant, je reçois toujours l'exception de référence NULL.ExecuteScalar renvoie NullReferenceException lors de l'appel d'un proc stocké qui renvoie 1
J'ai donc essayé d'utiliser le SqlCommand pour interroger une table qui contient des données:
SqlCommand sqlCommand = new SqlCommand("SELECT * FROM ATableThatHasValues", conn)
Quand je courais exécuter scalaire, je suis en mesure de ramasser une valeur, donc je sais que j'ai l'autorisation d'interroger la base de données. Je soupçonne que c'est un paramètre d'autorisation spécifique stocké que j'ai raté?
J'apprécierais vraiment tout commentaire/suggestion car j'ai été bloqué dessus pendant un jour maintenant. :(
Mon code ressemble à ceci:
using (SqlConnection sqlConnection = new SqlConnection(connectionString))
{
sqlConnection.Open();
using (SqlCommand sqlCommand = new SqlCommand("GetSomeValue", sqlConnection))
{
sqlCommand.CommandType = CommandType.StoredProcedure;
//sqlCommand.Parameters.Add(new SqlParameter("@Id", this.ID));
//sqlCommand.Parameters.Add(new SqlParameter("@State", 1 /* active */));
byte retValue = (byte)sqlCommand.ExecuteScalar();
return retValue;
}
}
MERCI
Quelle ligne lance l'exécution? Où est la trace de la pile? – asawyer
Vous comprenez le but de 'ExecuteScalar', n'est-ce pas? Il renvoie la première colonne de la première ligne de données, tout le reste est ignoré. Y a-t-il une raison pour que vous l'utilisiez avec 'SELECT *'? –