2013-07-30 2 views
2

Je ne sais pas comment remplir correctement - j'ai un proc stocké et je veux retourner les résultats comme un IEnumberableDe retour des résultats de la procédure stockée comme IEnumerable

public IEnumerable GetGuids(int id) 
    { 
     SqlCommand _command = new SqlCommand("storedProc"); 
     _command.CommandType = CommandType.StoredProcedure; 
     _command.Parameters.AddWithValue("@ItemID", id); 

     return _command.ExecuteReader(); 
    } 

quand je lance ce que je reçois: ExecuteReader: Connection property has not been initialized.

+0

Votre '' SqlCommand' a besoin d'un SqlConnection'. Vérifiez le deuxième paramètre du constructeur. – zimdanen

+1

Vous devriez lire un tutoriel sur l'utilisation de SqlCommand. Je ne pense pas que vous voulez vraiment retourner _command.ExecuteReader() - http://csharp-station.com/Tutorial/AdoDotNet/Lesson03 – empi

Répondre

0

passer l'objet de connexion comme celui-ci GetGuids(int id, SqlConnection conn)

SqlCommand cmd = new SqlCommand ("query", conn); 
4

Votre SqlCommand n'a pas de connexion correspondante. Soit utiliser:

_command.Connection = conn; 

ou créer le SqlCommand en utilisant conn.CreateCommand(...)

1

Initialize SqlCommand avec le SqlConnection et assurez-vous que le SqlConnection est ouvert. Après cela ExecuteReader donne un SqlDataReader et vous devez lire le lecteur et lire les valeurs

SqlDataReader reader = _command.ExecuteReader(); 

while(reader.Read() 
{ 
    // readvalue of reader["columname"] and insert into a list or yield return it. 
} 
Questions connexes