sql >> Database teknologi >  >> RDS >> Sqlserver

Udfyld ArrayList fra Stored Procedure-resultatsæt

Det du skal gøre er at kalde ExecuteReader() på den cmd objekt, som sådan:

public static IEnumerable<int> GetAllVendors()
{
    using (var cmd = Data.GetCommand(Configuration.DatabaseOwnerPrefix + ".GetAllInformationAndHelpVendorIds", Connections.MyDbConnection))
    {
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                yield return reader.GetInt32(0);
            }
        }
    }
}

Dette forudsætter, at SQL returnerer en tabel, hvis første kolonne (identificeret ved indekset 0 til metoden GetInt32() ) vil være det ID, du leder efter. Hvis SQL returnerer id'erne i en anden kolonne, skal du bare justere indekset til den kolonne, du forventer at finde dem i.

Denne løsning forventer også, at kommandoens forbindelse allerede er åben. Hvis det ikke er det, kan du gøre cmd.Connection.Open() lige før cmd.ExecuteReader() .



  1. udvalgte brugere har mere end én særskilt post i mysql

  2. SQLite datatyper

  3. Er der et fald i ydeevnen, hvis der er for mange kolonner i en tabel?

  4. Bruger du BETWEEN på et varchar-felt, ikke et numerisk felt?