Без рамка на обект трябва да напишете кода, който чете стойностите от четеца на данни в екземпляр на вашия AccountInfo
клас:
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;
}
Имайте предвид, че типът връщане на функцията е променен на AccountInfo
, по-рано низ. Освен това е ограничено до четене само на един запис, ако едно извикване на sms.get_accounts_info
може да върне повече от един запис, това е друга история. Току-що предположих, че account_number
е първичен ключ в account_holders
таблица.
Някои подробности изискват вашето внимание, например balance
е пари в базата данни, но низ в класа. Също така не знаех дали и как product
(база данни) и accountType
(клас) ще съответства, затова го пропуснах.
Връзките с бази данни, командите и четците на данни са IDisposable
и трябва да бъде обвит в using
блокове.