PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да предам параметъра на функция postgre и да получа данни с помощта на ExecuteReader?

Без рамка на обект трябва да напишете кода, който чете стойностите от четеца на данни в екземпляр на вашия 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 блокове.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какви команди изпълнява `heroku pgbackups:capture` на сървъра за извършване на архивиране?

  2. Осмисляне на размерите на редовете в Postgres

  3. алтернатива на mysql_insert_id за postgresql

  4. При INSERT към таблица INSERT данни в свързани таблици

  5. Как да използвам bindparam() в персонализиран компилиран израз?