sql >> Database >  >> RDS >> PostgreSQL

Hoe de parameter doorgeven aan een postgre-functie en gegevens ophalen met behulp van ExecuteReader?

Zonder entiteitsframework moet u de code schrijven die de waarden uit de datareader leest in een instantie van uw AccountInfo klas:

public static AccountInfo GetAccountInfo(string accountNumber)
{
    AccountInfo result = null;
    using(var conn = new NpgsqlConnection("..."))
    {
        conn.Open();
        using(var command = new NpgsqlCommand("SELECT * FROM sms.get_accounts_info(@AccountNumber); ", conn))
        {
            command.Parameters.AddWithValue("@AccountNumber", accountNumber);
            using(var dr = command.ExecuteReader())
            {
                if(dr.HasRows && dr.Read())
                {
                    result = new AccountInfo { 
                        accountNumber = dr["accountNumber"].ToString(),
                        balance = dr["balance"].ToString(),
                        interestRate = Convert.ToInt32(dr["interestRate"]),
                        accountName = dr["accountName"].ToString()
                    };
                }
            }
        }
    }
    return result;
}

Merk op dat het retourtype van de functie is gewijzigd in AccountInfo , eerder string. Het is ook beperkt tot het lezen van slechts één record, als één aanroep naar sms.get_accounts_info meer dan één record zou kunnen retourneren, is een ander verhaal. Ik ging er gewoon vanuit dat account_number is een primaire sleutel in de account_holders tafel.

Sommige details hebben uw aandacht nodig, bijvoorbeeld balance is geld in de database, maar string in de klas. Ook wist ik niet of en hoe product (database) en accountType (klas) zou overeenkomen, dus heb ik het weggelaten.

Databaseverbindingen, opdrachten en datalezers zijn IDisposable en moet worden ingepakt in using blokken.




  1. stop met het invoegen van gegevens in de database bij het vernieuwen van de pagina

  2. Syntaxisfout met IF EXISTS UPDATE ELSE INSERT

  3. Hoe maak je een weergave met gegevens over de laatste 4 kwartalen?

  4. Zoek tabel met maximaal aantal rijen in een database in mysql