एंटिटी फ्रेमवर्क के बिना, आपको वह कोड लिखना होगा जो आपके 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
. में लपेटा जाना चाहिए ब्लॉक।