Skill Development

ডেটাবেস কানেক্টিভিটি

সি# এ ডেটাবেস কানেক্টিভিটি খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন অ্যাপ্লিকেশনকে ডেটা সংরক্ষণ বা পুনরুদ্ধারের জন্য ডেটাবেসের সাথে সংযুক্ত করতে হয়। সি# এ ডেটাবেস কানেক্টিভিটির জন্য সাধারণত ADO.NET এবং Entity Framework ব্যবহৃত হয়। ADO.NET এ SqlConnection, SqlCommand, SqlDataAdapter, এবং অন্যান্য ক্লাসের মাধ্যমে SQL সার্ভারের সাথে সংযোগ স্থাপন করা হয়।


ADO.NET ব্যবহার করে ডেটাবেস কানেক্টিভিটি

ADO.NET একটি ডেটা অ্যাক্সেস প্রযুক্তি, যা .NET ফ্রেমওয়ার্কের অংশ এবং SQL সার্ভার, Oracle, এবং অন্যান্য ডেটাবেসের সাথে সংযোগ স্থাপন করতে ব্যবহৃত হয়।

ADO.NET এর প্রধান ক্লাসগুলো

  • SqlConnection: ডেটাবেসের সাথে সংযোগ স্থাপন এবং বন্ধ করতে ব্যবহৃত হয়।
  • SqlCommand: SQL কুয়েরি বা কমান্ড এক্সিকিউট করতে ব্যবহৃত হয়।
  • SqlDataReader: ডেটা পড়ার জন্য ব্যবহৃত হয়।
  • SqlDataAdapter: ডেটাসেটকে ডেটাবেসের সাথে যুক্ত করতে এবং ডেটা আপডেট করতে ব্যবহৃত হয়।

ডেটাবেস কানেক্টিভিটির উদাহরণ (SQL Server)

নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে SQL Server ডেটাবেসের সাথে সংযোগ স্থাপন করে ডেটা পড়া হয়েছে।

১. SqlConnection ব্যবহার করে সংযোগ স্থাপন করা

using System;
using System.Data.SqlClient;

public class Program
{
    public static void Main()
    {
        // ডাটাবেস কানেকশন স্ট্রিং
        string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("Connection successful!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

২. ডেটা পড়া (SELECT স্টেটমেন্ট)

using System;
using System.Data.SqlClient;

public class Program
{
    public static void Main()
    {
        string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            string query = "SELECT * FROM Employees";

            SqlCommand command = new SqlCommand(query, connection);

            try
            {
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    Console.WriteLine("ID: " + reader["ID"] + ", Name: " + reader["Name"]);
                }

                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

ব্যাখ্যা

  • SqlCommand: SELECT কুয়েরি SqlCommand ব্যবহার করে এক্সিকিউট করা হয়েছে।
  • ExecuteReader: ExecuteReader মেথড ব্যবহার করে SqlDataReader এর মাধ্যমে ডেটা পড়া হয়েছে।

৩. ডেটা যোগ করা (INSERT স্টেটমেন্ট)

using System;
using System.Data.SqlClient;

public class Program
{
    public static void Main()
    {
        string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            string query = "INSERT INTO Employees (Name, Age) VALUES (@Name, @Age)";

            SqlCommand command = new SqlCommand(query, connection);
            command.Parameters.AddWithValue("@Name", "John Doe");
            command.Parameters.AddWithValue("@Age", 30);

            try
            {
                connection.Open();
                int rowsAffected = command.ExecuteNonQuery();
                Console.WriteLine("Rows affected: " + rowsAffected);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

ব্যাখ্যা

  • Parameters.AddWithValue: SQL ইনজেকশন রোধ করতে প্যারামিটার ব্যবহার করা হয়েছে।
  • ExecuteNonQuery: INSERT, UPDATE, এবং DELETE এর মত কমান্ডের জন্য ব্যবহৃত হয়।

৪. ডেটা আপডেট করা (UPDATE স্টেটমেন্ট)

string query = "UPDATE Employees SET Age = @Age WHERE Name = @Name";

SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Name", "John Doe");
command.Parameters.AddWithValue("@Age", 35);

ExecuteNonQuery() ব্যবহার করে এই কমান্ড চালালে নির্দিষ্ট Name এর জন্য Age আপডেট হবে।


৫. ডেটা মুছে ফেলা (DELETE স্টেটমেন্ট)

string query = "DELETE FROM Employees WHERE Name = @Name";

SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Name", "John Doe");

ExecuteNonQuery() ব্যবহার করে এই কমান্ড চালালে নির্দিষ্ট Name এর রেকর্ড মুছে যাবে।


Entity Framework দিয়ে ডেটাবেস কানেক্টিভিটি

Entity Framework (EF) একটি ORM (Object-Relational Mapping) টুল, যা ডেটাবেসের টেবিলকে সি# ক্লাস হিসেবে মডেল করে এবং SQL কোয়েরি লেখার প্রয়োজন ছাড়াই ডেটা পরিচালনা করতে সহায়তা করে।

উদাহরণ: Entity Framework ব্যবহার করে ডেটা যোগ করা

প্রথমে Entity Framework প্যাকেজ ইনস্টল করুন:

  • Package Manager Console এ যান এবং লিখুন:
Install-Package EntityFramework

মডেল তৈরি করা

public class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

public class MyDbContext : DbContext
{
    public DbSet Employees { get; set; }
}

ডেটা যোগ করা

using (var context = new MyDbContext())
{
    var employee = new Employee
    {
        Name = "John Doe",
        Age = 30
    };
    
    context.Employees.Add(employee);
    context.SaveChanges();
}

ডেটা পড়া

using (var context = new MyDbContext())
{
    var employees = context.Employees.ToList();
    foreach (var employee in employees)
    {
        Console.WriteLine("ID: " + employee.ID + ", Name: " + employee.Name);
    }
}

সংক্ষেপে ডেটাবেস কানেক্টিভিটি

মেথডব্যবহার
SqlConnectionডেটাবেসে সংযোগ স্থাপন ও বন্ধ করা
SqlCommandSQL কুয়েরি বা কমান্ড চালানো
SqlDataReaderডেটা পড়া
SqlDataAdapterডেটা আপডেট করা বা একাধিক রেকর্ড পড়া
Entity FrameworkORM টুল, যেটি ডেটাবেসকে অবজেক্ট হিসেবে ব্যবহার করতে দেয়

সি# এ ডেটাবেস কানেক্টিভিটির মাধ্যমে প্রোগ্রামের জন্য ডেটা ম্যানেজমেন্ট সহজ হয় এবং বিভিন্ন ডেটাবেস থেকে ডেটা সংগ্রহ, সংরক্ষণ, আপডেট, এবং মুছে ফেলার কাজ সম্পন্ন করা যায়। ADO.NET সরাসরি SQL সার্ভারের সাথে কাজ করে, আর Entity Framework ডেটাবেসকে অবজেক্ট হিসেবে ব্যবহার করে উন্নতমানের ডেটা ম্যানেজমেন্ট সিস্টেম প্রদান করে।

Content added By

ADO.NET দিয়ে ডেটাবেস কানেক্টিভিটি

ADO.NET সি# এ ডেটাবেস সংযোগ করার জন্য একটি জনপ্রিয় টুল, যা ডেটাবেসের সাথে ডেটা রিট্রিভ, ইনসার্ট, আপডেট এবং ডিলিট করার জন্য ব্যবহৃত হয়। ADO.NET মূলত System.Data নেমস্পেসের অধীনে ডেটাবেস সংক্রান্ত ক্লাস, ইন্টারফেস এবং কনেকশন স্ট্রিংগুলো সরবরাহ করে।

ADO.NET এর প্রধান উপাদানসমূহ

  1. Connection: ডেটাবেসের সাথে সংযোগ স্থাপন করে।
  2. Command: ডেটাবেসে SQL কমান্ড চালায়।
  3. DataReader: রিড-অনলি এবং ফরওয়ার্ড-অনলি ডেটা পড়ার জন্য ব্যবহার করা হয়।
  4. DataAdapter: ডেটাবেস থেকে ডেটা রিট্রিভ ও আপডেট করতে ব্যবহৃত হয়।
  5. DataSet: ডেটার ইন-মেমোরি ক্যাশ সরবরাহ করে, যা বিভিন্ন টেবিল এবং রিলেশন ধরে রাখতে পারে।

উদাহরণ: ADO.NET ব্যবহার করে SQL Server ডেটাবেসের সাথে সংযোগ স্থাপন করা

ধাপ ১: SQL Server কানেকশন স্ট্রিং সেটআপ

ADO.NET দিয়ে ডেটাবেস কানেকশন তৈরি করতে প্রথমে একটি কনেকশন স্ট্রিং প্রয়োজন হয়, যা সার্ভারের সাথে যোগাযোগ করার জন্য প্রয়োজনীয় তথ্য ধারণ করে।

কনেকশন স্ট্রিং উদাহরণ

string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";

ধাপ ২: SQL Server ডেটাবেসে সংযোগ স্থাপন করা

নিচে একটি ADO.NET ব্যবহার করে SQL Server ডেটাবেসে সংযোগ স্থাপন, ডেটা ইনসার্ট, রিড এবং আপডেটের উদাহরণ দেওয়া হলো।


উদাহরণ ১: ডেটাবেসে সংযোগ তৈরি এবং ডেটা রিড করা

using System;
using System.Data;
using System.Data.SqlClient;

public class Program
{
    public static void Main()
    {
        // কানেকশন স্ট্রিং
        string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";
        
        // কানেকশন তৈরি
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("Database connected successfully.");

                // SQL কমান্ড
                string query = "SELECT * FROM Students";
                
                // কমান্ড তৈরি
                SqlCommand command = new SqlCommand(query, connection);
                
                // DataReader দিয়ে ডেটা পড়া
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Console.WriteLine("ID: " + reader["ID"] + ", Name: " + reader["Name"] + ", Age: " + reader["Age"]);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

ব্যাখ্যা

  1. SqlConnection: কানেকশন স্ট্রিং ব্যবহার করে ডেটাবেসের সাথে সংযোগ স্থাপন করা হয়েছে।
  2. SqlCommand: SELECT স্টেটমেন্ট ব্যবহার করে ডেটা রিড করার জন্য SQL কমান্ড তৈরি করা হয়েছে।
  3. SqlDataReader: ExecuteReader() মেথড দিয়ে DataReader তৈরি করা হয়েছে, যা ডেটা রিড করে প্রতিটি রেকর্ড প্রিন্ট করে।

উদাহরণ ২: ডেটাবেসে ডেটা ইনসার্ট করা

using System;
using System.Data.SqlClient;

public class Program
{
    public static void Main()
    {
        string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                
                // SQL ইনসার্ট কমান্ড
                string query = "INSERT INTO Students (Name, Age) VALUES (@Name, @Age)";
                
                SqlCommand command = new SqlCommand(query, connection);
                
                // প্যারামিটার সেট করা
                command.Parameters.AddWithValue("@Name", "John Doe");
                command.Parameters.AddWithValue("@Age", 21);
                
                // ExecuteNonQuery দিয়ে ডেটা ইনসার্ট করা
                int rowsAffected = command.ExecuteNonQuery();
                Console.WriteLine(rowsAffected + " row(s) inserted.");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

ব্যাখ্যা

  • INSERT INTO: SQL ইনসার্ট স্টেটমেন্ট ব্যবহার করে Students টেবিলে ডেটা যুক্ত করা হয়েছে।
  • Parameters: SQL ইনজেকশন থেকে রক্ষা পেতে প্যারামিটার ব্যবহার করা হয়েছে।
  • ExecuteNonQuery(): এটি কমান্ডটি চালায় এবং কতগুলি সারি প্রভাবিত হয়েছে তা রিটার্ন করে।

উদাহরণ ৩: ডেটা আপডেট করা

using System;
using System.Data.SqlClient;

public class Program
{
    public static void Main()
    {
        string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                
                // SQL আপডেট কমান্ড
                string query = "UPDATE Students SET Age = @Age WHERE Name = @Name";
                
                SqlCommand command = new SqlCommand(query, connection);
                
                // প্যারামিটার সেট করা
                command.Parameters.AddWithValue("@Age", 22);
                command.Parameters.AddWithValue("@Name", "John Doe");
                
                // ExecuteNonQuery দিয়ে ডেটা আপডেট করা
                int rowsAffected = command.ExecuteNonQuery();
                Console.WriteLine(rowsAffected + " row(s) updated.");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

ব্যাখ্যা

  • UPDATE: SQL UPDATE স্টেটমেন্ট ব্যবহার করে Students টেবিলে নির্দিষ্ট রেকর্ড আপডেট করা হয়েছে।
  • Parameters: SQL ইনজেকশন থেকে রক্ষা পেতে প্যারামিটার ব্যবহার করা হয়েছে।

উদাহরণ ৪: ডেটা ডিলিট করা

using System;
using System.Data.SqlClient;

public class Program
{
    public static void Main()
    {
        string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                
                // SQL ডিলিট কমান্ড
                string query = "DELETE FROM Students WHERE Name = @Name";
                
                SqlCommand command = new SqlCommand(query, connection);
                
                // প্যারামিটার সেট করা
                command.Parameters.AddWithValue("@Name", "John Doe");
                
                // ExecuteNonQuery দিয়ে ডেটা ডিলিট করা
                int rowsAffected = command.ExecuteNonQuery();
                Console.WriteLine(rowsAffected + " row(s) deleted.");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

ব্যাখ্যা

  • DELETE FROM: SQL DELETE স্টেটমেন্ট ব্যবহার করে Students টেবিল থেকে নির্দিষ্ট রেকর্ড ডিলিট করা হয়েছে।
  • Parameters: SQL ইনজেকশন থেকে রক্ষা পেতে প্যারামিটার ব্যবহার করা হয়েছে।

সংক্ষেপে ADO.NET

  • SqlConnection: ডেটাবেসের সাথে সংযোগ স্থাপন করে।
  • SqlCommand: SQL কমান্ড তৈরি এবং ডাটাবেসে চালাতে ব্যবহৃত।
  • SqlDataReader: ডেটা রিড করতে ব্যবহৃত হয়, যা রিড-অনলি এবং ফরওয়ার্ড-অনলি।
  • ExecuteNonQuery: ডাটাবেসে ইনসার্ট, আপডেট, ডিলিট অপারেশনের জন্য ব্যবহৃত।
  • ExecuteReader: ডাটাবেস থেকে রিড অপারেশনের জন্য ব্যবহৃত।

ADO.NET ব্যবহার করে সি# এ ডেটাবেস সংযোগ তৈরি করে ডেটাবেস অপারেশনগুলো সম্পন্ন করা সহজ এবং কার্যকরী হয়।

Content added By

সি# এ SqlConnection, SqlCommand, এবং SqlDataReader হলো ADO.NET লাইব্রেরির প্রধান উপাদান, যা ডেটাবেস কানেক্টিভিটির জন্য ব্যবহৃত হয়। এগুলোর মাধ্যমে SQL Server ডেটাবেসের সাথে সংযোগ স্থাপন, কুয়েরি এক্সিকিউট করা এবং ডেটা রিড করা সম্ভব হয়।


১. SqlConnection

SqlConnection ক্লাসটি ডেটাবেসের সাথে সংযোগ স্থাপন এবং বন্ধ করার জন্য ব্যবহৃত হয়। SqlConnection এর মাধ্যমে একটি নির্দিষ্ট ডেটাবেসে কানেক্ট করা সম্ভব হয়, যেখানে কানেকশন স্ট্রিং ব্যবহার করে ডেটাবেসের সার্ভার, ডাটাবেজ নাম, ইউজার এবং পাসওয়ার্ড নির্ধারণ করা হয়।

উদাহরণ: SqlConnection দিয়ে সংযোগ স্থাপন

using System;
using System.Data.SqlClient;

public class Program
{
    public static void Main()
    {
        string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("Connection established successfully!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

ব্যাখ্যা

  • Connection String: ডেটাবেসের তথ্য ধারণ করে, যাতে ডাটাবেসের সাথে সংযোগ স্থাপন করা যায়।
  • connection.Open(): ডেটাবেসের সাথে সংযোগ স্থাপন করে।
  • connection.Close(): using ব্লকের বাইরে গেলে স্বয়ংক্রিয়ভাবে সংযোগ বন্ধ হয়ে যায়।

২. SqlCommand

SqlCommand ক্লাসটি SQL কুয়েরি বা কমান্ড এক্সিকিউট করার জন্য ব্যবহৃত হয়। এর মাধ্যমে SELECT, INSERT, UPDATE, DELETE প্রভৃতি SQL স্টেটমেন্ট চালানো যায়।

উদাহরণ: SqlCommand দিয়ে SQL কুয়েরি চালানো

using System;
using System.Data.SqlClient;

public class Program
{
    public static void Main()
    {
        string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            string query = "INSERT INTO Employees (Name, Age) VALUES (@Name, @Age)";
            SqlCommand command = new SqlCommand(query, connection);

            // প্যারামিটার সেট করা হচ্ছে
            command.Parameters.AddWithValue("@Name", "John Doe");
            command.Parameters.AddWithValue("@Age", 30);

            try
            {
                connection.Open();
                int rowsAffected = command.ExecuteNonQuery();
                Console.WriteLine("Rows affected: " + rowsAffected);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

ব্যাখ্যা

  • SqlCommand: SqlCommand অবজেক্ট query এবং connection প্যারামিটার নিয়ে তৈরি করা হয়েছে।
  • ExecuteNonQuery: INSERT, UPDATE, এবং DELETE এর মত কমান্ডের জন্য ব্যবহৃত, যা প্রভাবিত রেকর্ডের সংখ্যা প্রদান করে।
  • Parameters.AddWithValue: SQL ইনজেকশন রোধ করতে প্যারামিটারাইজড কুয়েরি ব্যবহার করা হয়।

৩. SqlDataReader

SqlDataReader ক্লাসটি ডেটাবেস থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়। এটি সাধারণত SELECT কুয়েরির সাথে ব্যবহৃত হয় এবং রিড-ওনলি (শুধুমাত্র পড়ার জন্য) এবং ফরোয়ার্ড-ওনলি (অগ্রসর মান) ডেটা প্রদান করে। SqlDataReader ডেটা রিড করার জন্য একটি দ্রুত ও কার্যকরী পদ্ধতি প্রদান করে।

উদাহরণ: SqlDataReader দিয়ে ডেটা পড়া

using System;
using System.Data.SqlClient;

public class Program
{
    public static void Main()
    {
        string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            string query = "SELECT ID, Name, Age FROM Employees";
            SqlCommand command = new SqlCommand(query, connection);

            try
            {
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    Console.WriteLine("ID: " + reader["ID"]);
                    Console.WriteLine("Name: " + reader["Name"]);
                    Console.WriteLine("Age: " + reader["Age"]);
                    Console.WriteLine("--------------------");
                }

                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

ব্যাখ্যা

  • ExecuteReader: SELECT কুয়েরি চালানোর জন্য ব্যবহৃত, যা SqlDataReader অবজেক্ট প্রদান করে।
  • reader.Read(): প্রতিটি রেকর্ড পড়ার জন্য ব্যবহৃত।
  • reader["ColumnName"]: কলাম থেকে ডেটা পড়তে ব্যবহৃত, যেখানে ColumnName হলো ডেটাবেসের কলামের নাম।

ExecuteScalar এবং ExecuteNonQuery মেথড

ExecuteScalar: একটি একক মান (প্রথম কলাম এবং প্রথম রো) রিটার্ন করতে ব্যবহার করা হয়।

string query = "SELECT COUNT(*) FROM Employees";
SqlCommand command = new SqlCommand(query, connection);
int count = (int)command.ExecuteScalar();
Console.WriteLine("Total Employees: " + count);

ExecuteNonQuery: INSERT, UPDATE, এবং DELETE এর মত স্টেটমেন্ট এক্সিকিউট করতে ব্যবহৃত হয় এবং প্রভাবিত রো সংখ্যা প্রদান করে।

string query = "DELETE FROM Employees WHERE ID = @ID";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@ID", 1);
int rowsDeleted = command.ExecuteNonQuery();
Console.WriteLine("Rows deleted: " + rowsDeleted);

সংক্ষেপে

ক্লাসব্যবহার
SqlConnectionডেটাবেসের সাথে সংযোগ স্থাপন এবং বন্ধ করা
SqlCommandSQL কুয়েরি চালানো, যেমন SELECT, INSERT, UPDATE, DELETE
SqlDataReaderডেটাবেস থেকে রিড-ওনলি এবং ফরোয়ার্ড-ওনলি ডেটা পড়া

সারাংশ

SqlConnection ডেটাবেসের সাথে সংযোগ স্থাপন করে, SqlCommand এর মাধ্যমে SQL স্টেটমেন্ট এক্সিকিউট করা হয় এবং SqlDataReader এর মাধ্যমে ডেটা পড়া হয়। সি# এ ADO.NET ব্যবহার করে এই ক্লাসগুলো দিয়ে সহজেই ডেটাবেসের সাথে ইন্টারঅ্যাকশন করা যায়, যা ডেটাবেস পরিচালনা সহজ করে তোলে।

Content added By

CRUD অপারেশন হলো ডেটাবেসের সাথে কাজ করার সময় সবচেয়ে সাধারণ চারটি অপারেশন, যা Create, Read, Update, এবং Delete এর সংক্ষিপ্ত রূপ। এই অপারেশনগুলো ডেটাবেস টেবিলে রেকর্ড তৈরি, পড়া, আপডেট এবং মুছে ফেলার জন্য ব্যবহৃত হয়। নিচে ADO.NET ব্যবহার করে C# এ CRUD অপারেশনের উদাহরণ দেওয়া হলো।


প্রয়োজনীয় সেটআপ

  • Visual Studio: C# প্রজেক্ট তৈরি করতে।
  • SQL Server ডেটাবেস: ডেটাবেসে একটি টেবিল তৈরি করা হবে, যেখানে আমরা CRUD অপারেশন করব।
  • ADO.NET: ডেটাবেস সংযোগ এবং ডেটা পরিচালনার জন্য ব্যবহার করব।

টেবিল তৈরি

নিচের SQL কোডটি ব্যবহার করে একটি Students টেবিল তৈরি করুন:

CREATE TABLE Students (
    ID INT PRIMARY KEY IDENTITY,
    Name NVARCHAR(50),
    Age INT
);

কনেকশন স্ট্রিং সেটআপ

প্রজেক্টে ডেটাবেসের সাথে সংযোগ করার জন্য একটি কনেকশন স্ট্রিং প্রয়োজন। নিচের মতো একটি কনেকশন স্ট্রিং তৈরি করুন:

string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";

CRUD অপারেশন উদাহরণ

১. Create: ডেটা ইনসার্ট করা

using System;
using System.Data.SqlClient;

public class Program
{
    public static void CreateStudent(string name, int age)
    {
        string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "INSERT INTO Students (Name, Age) VALUES (@Name, @Age)";
            SqlCommand command = new SqlCommand(query, connection);

            command.Parameters.AddWithValue("@Name", name);
            command.Parameters.AddWithValue("@Age", age);

            int rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine(rowsAffected + " row(s) inserted.");
        }
    }

    public static void Main()
    {
        CreateStudent("John Doe", 20);
    }
}

ব্যাখ্যা

  • INSERT INTO স্টেটমেন্ট ব্যবহার করে Students টেবিলে নতুন ডেটা যোগ করা হয়েছে।
  • Parameters: SQL ইনজেকশন থেকে রক্ষা পেতে প্যারামিটার ব্যবহার করা হয়েছে।

২. Read: ডেটা রিড করা

using System;
using System.Data.SqlClient;

public class Program
{
    public static void ReadStudents()
    {
        string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "SELECT * FROM Students";
            SqlCommand command = new SqlCommand(query, connection);

            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    Console.WriteLine("ID: " + reader["ID"] + ", Name: " + reader["Name"] + ", Age: " + reader["Age"]);
                }
            }
        }
    }

    public static void Main()
    {
        ReadStudents();
    }
}

ব্যাখ্যা

  • SELECT * FROM: Students টেবিল থেকে সব রেকর্ড পড়া হয়েছে।
  • SqlDataReader: রিড-অনলি মোডে ডেটা রিড করা হয়েছে।

৩. Update: ডেটা আপডেট করা

using System;
using System.Data.SqlClient;

public class Program
{
    public static void UpdateStudent(int id, string name, int age)
    {
        string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "UPDATE Students SET Name = @Name, Age = @Age WHERE ID = @ID";
            SqlCommand command = new SqlCommand(query, connection);

            command.Parameters.AddWithValue("@ID", id);
            command.Parameters.AddWithValue("@Name", name);
            command.Parameters.AddWithValue("@Age", age);

            int rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine(rowsAffected + " row(s) updated.");
        }
    }

    public static void Main()
    {
        UpdateStudent(1, "Jane Doe", 25);
    }
}

ব্যাখ্যা

  • UPDATE Students SET: Students টেবিলের নির্দিষ্ট রেকর্ড আপডেট করা হয়েছে।
  • WHERE ID = @ID: ID অনুসারে নির্দিষ্ট রেকর্ড আপডেট করা হয়েছে।

৪. Delete: ডেটা ডিলিট করা

using System;
using System.Data.SqlClient;

public class Program
{
    public static void DeleteStudent(int id)
    {
        string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "DELETE FROM Students WHERE ID = @ID";
            SqlCommand command = new SqlCommand(query, connection);

            command.Parameters.AddWithValue("@ID", id);

            int rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine(rowsAffected + " row(s) deleted.");
        }
    }

    public static void Main()
    {
        DeleteStudent(1);
    }
}

ব্যাখ্যা

  • DELETE FROM: Students টেবিল থেকে নির্দিষ্ট রেকর্ড ডিলিট করা হয়েছে।
  • WHERE ID = @ID: ID অনুসারে নির্দিষ্ট রেকর্ড ডিলিট করা হয়েছে।

সংক্ষেপে CRUD অপারেশন

  1. Create: INSERT INTO স্টেটমেন্ট দিয়ে নতুন ডেটা টেবিলে যোগ করা।
  2. Read: SELECT * FROM স্টেটমেন্ট দিয়ে টেবিলের ডেটা পড়া।
  3. Update: UPDATE স্টেটমেন্ট দিয়ে টেবিলের নির্দিষ্ট ডেটা আপডেট করা।
  4. Delete: DELETE FROM স্টেটমেন্ট দিয়ে টেবিল থেকে নির্দিষ্ট ডেটা ডিলিট করা।

এভাবে ADO.NET ব্যবহার করে সি# প্রোগ্রামে CRUD অপারেশন সম্পন্ন করা যায়, যা ডেটাবেস ভিত্তিক অ্যাপ্লিকেশন তৈরি করতে সহায়ক।

Content added By

Entity Framework (EF) হলো একটি Object-Relational Mapping (ORM) টুল, যা সি# প্রোগ্রামিং ভাষায় ডেটাবেস পরিচালনা করতে ব্যবহার করা হয়। এটি ডেটাবেসের টেবিলগুলিকে সি# অবজেক্ট হিসেবে ব্যবহার করতে দেয় এবং ডেটা ম্যানিপুলেশন আরও সহজ করে তোলে। Entity Framework ব্যবহার করলে সরাসরি SQL কুয়েরি লেখার প্রয়োজন হয় না; এটি ডেটাবেস অপারেশনের জন্য C# কোডে উচ্চ স্তরের (high-level) মেথড প্রদান করে।


Entity Framework এর সুবিধা

  • SQL না লিখেও ডেটাবেস অপারেশন: ডেটাবেসের জন্য সরাসরি SQL কোয়েরি লেখার প্রয়োজন নেই; এর পরিবর্তে লিনকু (LINQ) ব্যবহার করে ডেটা ফিল্টার, আপডেট, এবং ম্যানিপুলেট করা যায়।
  • Object-Oriented ডেভেলপমেন্ট: ডেটাবেস টেবিলকে সরাসরি সি# ক্লাস হিসেবে ব্যবহার করা যায়।
  • Cross-Database Compatibility: SQL Server, MySQL, PostgreSQL সহ বিভিন্ন ডেটাবেসের সাথে কাজ করে।
  • কোড ম্যানেজমেন্ট সহজ: কোড ফার্স্ট এবং ডাটাবেস ফার্স্ট পদ্ধতিতে ব্যবহার করা যায়।

Entity Framework এর পদ্ধতি

Entity Framework তিনটি পদ্ধতিতে কাজ করতে পারে:

  1. Code-First: প্রোগ্রামার প্রথমে C# মডেল ক্লাস তৈরি করে এবং তারপর Entity Framework এই মডেল থেকে ডাটাবেস তৈরি করে।
  2. Database-First: একটি বিদ্যমান ডাটাবেস থেকে মডেল তৈরি করে।
  3. Model-First: প্রথমে গ্রাফিকাল মডেল তৈরি করা হয় এবং তারপর ডেটাবেস তৈরি করা হয়।

Entity Framework ইনস্টলেশন

Entity Framework ব্যবহার করতে হলে প্রথমে NuGet Package Manager ব্যবহার করে Entity Framework ইনস্টল করতে হবে।

  1. Visual Studio তে Package Manager Console এ যান।
  2. নিচের কমান্ডটি চালান:
Install-Package EntityFramework

Code-First উদাহরণ

Code-First পদ্ধতিতে প্রথমে একটি C# মডেল ক্লাস তৈরি করা হয়, যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে।

১. মডেল তৈরি করা

public class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

এখানে, Employee নামের ক্লাসটি একটি টেবিল হিসেবে ব্যবহৃত হবে এবং এর ID, Name, এবং Age প্রপার্টিগুলো টেবিলের কলাম হিসেবে কাজ করবে।

২. DbContext তৈরি করা

DbContext ক্লাস Entity Framework এর মূল কাঠামো, যা ডাটাবেস অপারেশন পরিচালনা করে। এতে ডেটাবেস টেবিলের জন্য DbSet ব্যবহার করা হয়।

using System.Data.Entity;

public class MyDbContext : DbContext
{
    public DbSet<Employee> Employees { get; set; }
}

৩. ডেটা যোগ করা, পড়া, আপডেট করা, এবং মুছে ফেলা

Entity Framework এর মাধ্যমে CRUD (Create, Read, Update, Delete) অপারেশন করা খুবই সহজ।

ডেটা যোগ করা

using (var context = new MyDbContext()) {    var employee = new Employee    {        Name = "John Doe",        Age = 30    };        context.Employees.Add(employee);    context.SaveChanges(); }

ডেটা পড়া

using (var context = new MyDbContext())
{
    var employees = context.Employees.ToList();
    foreach (var employee in employees)
    {
        Console.WriteLine("ID: " + employee.ID + ", Name: " + employee.Name);
    }
}

ডেটা আপডেট করা

using (var context = new MyDbContext())
{
    var employee = context.Employees.FirstOrDefault(e => e.ID == 1);
    if (employee != null)
    {
        employee.Age = 35;
        context.SaveChanges();
    }
}

ডেটা মুছে ফেলা

using (var context = new MyDbContext())
{
    var employee = context.Employees.FirstOrDefault(e => e.ID == 1);
    if (employee != null)
    {
        context.Employees.Remove(employee);
        context.SaveChanges();
    }
}

LINQ এর মাধ্যমে কোয়েরি করা

Entity Framework LINQ (Language-Integrated Query) সমর্থন করে, যা SQL কুয়েরির মতো কাজ করে।

using (var context = new MyDbContext())
{
    var employees = context.Employees
                           .Where(e => e.Age > 25)
                           .OrderBy(e => e.Name)
                           .ToList();

    foreach (var employee in employees)
    {
        Console.WriteLine("Name: " + employee.Name + ", Age: " + employee.Age);
    }
}

Database-First উদাহরণ

Database-First পদ্ধতিতে, প্রথমে একটি বিদ্যমান ডাটাবেস থেকে মডেল তৈরি করা হয়। Visual Studio এ Database-First পদ্ধতি ব্যবহার করার ধাপগুলো নিচে দেওয়া হলো:

  1. Add New Item -> ADO.NET Entity Data Model নির্বাচন করুন।
  2. Model নাম দিন এবং EF Designer from Database নির্বাচন করুন।
  3. ডাটাবেস কানেকশন সেট করুন এবং টেবিলগুলো সিলেক্ট করে Finish ক্লিক করুন।

Entity Framework স্বয়ংক্রিয়ভাবে ক্লাস এবং DbContext তৈরি করে দেয়।


সংক্ষেপে Entity Framework

বৈশিষ্ট্যব্যবহার
Code-Firstপ্রথমে কোড লিখে ডেটাবেস তৈরি করা
Database-Firstপ্রথমে ডাটাবেস থেকে মডেল তৈরি করা
CRUD অপারেশনAdd, Read, Update, এবং Delete সহজে সম্পন্ন করা যায়
LINQ সমর্থনডেটার উপর কোয়েরি চালাতে LINQ ব্যবহার করা যায়

Entity Framework ব্যবহারে সি# ডেভেলপাররা খুব সহজে ডেটাবেস পরিচালনা করতে পারে, কোড ফার্স্ট ও ডেটাবেস ফার্স্ট পদ্ধতিতে ডেটা ম্যানেজমেন্ট আরো সহজ হয় এবং LINQ এর মাধ্যমে জটিল কুয়েরিগুলো সহজে করা সম্ভব।

Content added || updated By

আরও দেখুন...

Promotion