В области программирования на C# эффективное извлечение данных и манипулирование ими из базы данных являются фундаментальными задачами для создания надежных приложений. Класс SqlDataAdapter, являющийся частью пространства имен System.Data.SqlClient, предлагает мощный механизм, позволяющий устранить разрыв между базами данных и вашим кодом C#. В этой статье рассматривается использование SqlDataAdapter, демонстрируя, как извлекать данные из базы данных, манипулировать ими и поддерживать синхронизацию базовой базы данных.

Получение данных с помощью SqlDataAdapter

Класс SqlDataAdapter упрощает процесс извлечения данных из базы данных и заполнения их в структуры данных C#. Вот как вы можете его использовать:

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

class Program
{
    static void Main(string[] args)
    {
        string connectionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=Username;Password=Password";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "SELECT ProductID, ProductName, Price FROM Products";
            using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
            {
                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet, "Products");
                DataTable productsTable = dataSet.Tables["Products"];
                foreach (DataRow row in productsTable.Rows)
                {
                    Console.WriteLine($"ID: {row["ProductID"]}, Name: {row["ProductName"]}, Price: {row["Price"]}");
                }
            }
            connection.Close();
        }
    }
}

В этом примере SqlDataAdapter используется для извлечения данных из таблицы «Продукты» и заполнения их в DataSet. Затем данные извлекаются и обрабатываются с помощью DataTable.

Обновление базы данных с помощью SqlDataAdapter

SqlDataAdapter также позволяет вам манипулировать данными и впоследствии обновлять базовую базу данных:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
string query = "SELECT ProductID, ProductName, Price FROM Products";
    string updateQuery = "UPDATE Products SET Price = @NewPrice WHERE ProductID = @ProductID";
    using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
    {
        using (SqlCommandBuilder builder = new SqlCommandBuilder(adapter))
        {
            DataSet dataSet = new DataSet();
            adapter.Fill(dataSet, "Products");
            DataTable productsTable = dataSet.Tables["Products"];
            foreach (DataRow row in productsTable.Rows)
            {
                int productId = Convert.ToInt32(row["ProductID"]);
                decimal newPrice = Convert.ToDecimal(row["Price"]) + 10.00M;
                row["Price"] = newPrice;
                SqlCommand updateCommand = new SqlCommand(updateQuery, connection);
                updateCommand.Parameters.AddWithValue("@NewPrice", newPrice);
                updateCommand.Parameters.AddWithValue("@ProductID", productId);
                adapter.UpdateCommand = updateCommand;
                adapter.Update(dataSet, "Products");
            }
        }
    }
    connection.Close();
}

В этом примере SqlDataAdapter используется для выборки данных, а SqlCommandBuilder облегчает создание необходимых операторов SQL для обновления. Обновленные данные затем синхронизируются с базой данных с помощью метода Update.

Заключение

Класс SqlDataAdapter — это жизненно важный компонент программирования баз данных на C#, предоставляющий удобный способ извлечения, манипулирования и синхронизации данных между вашим приложением и базой данных. Умело используя возможности SqlDataAdapter, вы можете создавать управляемые данными приложения, которые эффективно взаимодействуют с базами данных, сохраняя при этом целостность и согласованность данных. Не забывайте придерживаться лучших практик, таких как использование транзакций при необходимости, чтобы обеспечить безопасность и надежность ваших операций с данными.

Спасибо, что дочитали до конца. Пожалуйста, подумайте о том, чтобы подписаться на автора и эту публикацию. Посетите Stackademic, чтобы узнать больше о том, как мы демократизируем бесплатное образование в области программирования во всем мире.