কম্পিউটার টিউটোরিয়াল

C#-এ কানেকশন পুলিং (Connection Pooling) কী এবং কীভাবে অর্জন করবেন

using স্টেটমেন্ট নিশ্চিত করে যে Dispose() কল হবে এমনকি এক্সেপশন হওয়া সত্ত্বেও। Dispose() হলো IDisposable ইন্টারফেসের একটি মেথড যা কাস্টম গারবেজ কালেকশন ইমপ্লিমেন্ট করতে সাহায্য করে। ডাটাবেস অপারেশন (ইনসার্ট, আপডেট, ডিলিট) করার সময় যদি এক্সেপশন হয়, তবে using স্টেটমেন্ট অটোমেটিক্যালি কানেকশন বন্ধ করে দেয়—Close() এক্সপ্লিসিট কল করার প্রয়োজন নেই।

এছাড়া এটি কানেকশন পুলিং-এ সাহায্য করে। .NET-এ কানেকশন পুলিং ডাটাবেস কানেকশন বারবার বন্ধ করার প্রয়োজন কেটে দেয়। এটি কানেকশন অবজেক্টকে একটি পুলে পাঠায় ভবিষ্যৎ ব্যবহারের জন্য (নেক্সট ডাটাবেস কল)। পরবর্তীবার ডাটাবেস কানেকশন কল করলে পুল থেকে অবজেক্ট ফেচ করে। তাই অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত হয়। using স্টেটমেন্ট ব্যবহার করলে কন্ট্রোলার অবজেক্টকে অটোমেটিক্যালি কানেকশন পুলে পাঠায়, Close() এবং Dispose() এক্সপ্লিসিট কল করার প্রয়োজন নেই।

উদাহরণ

string connString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;";
using (SqlConnection conn = new SqlConnection(connString))
{
    SqlCommand cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT CustomerId, CompanyName FROM Customers";
    conn.Open();
    using (SqlDataReader dr = cmd.ExecuteReader())
    {
        while (dr.Read())
            Console.WriteLine("{0}\t{1}", dr.GetString(0), dr.GetString(1));
    }
}

ব্যাখ্যা: উপরের কোডে কোনো কানেকশন এক্সপ্লিসিট বন্ধ করা হয়নি। using ব্লক শেষ হলে conn.Close() অটোমেটিক্যালি কল হবে। এক্সেপশন হলেও কানেকশন বন্ধ হবে। কানেকশন পুলিং ডিফল্টরূপে সক্রিয় থাকে (connection string-এ Pooling=false না দিলে)।

  1. আমার রাউটারের QoS কী, এর কাজ এবং কনফিগারেশন (উদাহরণ)

  2. BIOS কী এবং কেন আপডেট করবেন: পিসি ফার্মওয়্যার আপডেটের সম্পূর্ণ গাইড

  3. VPN কিল সুইচ ব্যাখ্যা: নিরাপদ ব্রাউজিংয়ের জন্য এটি কেন অপরিহার্য

  4. AirDrop: ম্যাক, আইফোন, আইপ্যাডের মধ্যে সুরক্ষিত, তৎক্ষণ ফাইল শেয়ারিং