En aquest tema, aprendrem com connectar una aplicació C# a una base de dades. Això és essencial per a moltes aplicacions que necessiten emmagatzemar, recuperar i manipular dades de manera persistent. Utilitzarem ADO.NET, una tecnologia de Microsoft per a l'accés a dades.

Objectius del Tema

  • Entendre què és ADO.NET i com funciona.
  • Aprendre a establir una connexió amb una base de dades.
  • Executar consultes SQL des de C#.
  • Manipular dades utilitzant DataReader i DataSet.

Què és ADO.NET?

ADO.NET és un conjunt de classes que exposen serveis d'accés a dades per a aplicacions .NET. Proporciona una manera eficient de connectar-se a bases de dades, executar consultes i manipular dades.

Components Clau d'ADO.NET

  • Connection: Estableix una connexió amb una base de dades.
  • Command: Executa una consulta SQL o una comanda a la base de dades.
  • DataReader: Llegeix dades de manera seqüencial des d'una base de dades.
  • DataSet: Emmagatzema dades en memòria per a la seva manipulació.

Establir una Connexió amb una Base de Dades

Exemple de Connexió a una Base de Dades SQL Server

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("Connexió establerta correctament.");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error en establir la connexió: " + ex.Message);
            }
        }
    }
}

Explicació del Codi

  • using System.Data.SqlClient;: Importa el namespace necessari per treballar amb SQL Server.
  • connectionString: Conté la informació necessària per connectar-se a la base de dades.
  • SqlConnection: Crea una nova connexió a la base de dades.
  • connection.Open(): Obre la connexió.
  • try-catch: Gestiona possibles errors en establir la connexió.

Executar Consultes SQL

Exemple d'Execució d'una Consulta SELECT

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            
            string query = "SELECT * FROM Employees";
            SqlCommand command = new SqlCommand(query, connection);
            
            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    Console.WriteLine($"ID: {reader["EmployeeID"]}, Nom: {reader["Name"]}");
                }
            }
        }
    }
}

Explicació del Codi

  • SqlCommand: Crea una comanda SQL per executar la consulta.
  • ExecuteReader(): Executa la consulta i retorna un SqlDataReader per llegir les dades.
  • reader.Read(): Llegeix les files retornades per la consulta.

Manipulació de Dades amb DataSet

Exemple d'Ús de DataSet

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

class Program
{
    static void Main()
    {
        string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            
            string query = "SELECT * FROM Employees";
            SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
            DataSet dataSet = new DataSet();
            
            adapter.Fill(dataSet, "Employees");
            
            foreach (DataRow row in dataSet.Tables["Employees"].Rows)
            {
                Console.WriteLine($"ID: {row["EmployeeID"]}, Nom: {row["Name"]}");
            }
        }
    }
}

Explicació del Codi

  • SqlDataAdapter: Utilitza la comanda SQL per omplir un DataSet amb les dades.
  • DataSet: Emmagatzema les dades en memòria.
  • adapter.Fill(): Omple el DataSet amb les dades de la consulta.
  • dataSet.Tables["Employees"].Rows: Accedeix a les files de la taula "Employees" dins del DataSet.

Exercicis Pràctics

Exercici 1: Connexió a una Base de Dades

Escriu un programa que estableixi una connexió amb una base de dades SQL Server i mostri un missatge indicant si la connexió ha estat exitosa o no.

Exercici 2: Executar una Consulta SELECT

Escriu un programa que executi una consulta SELECT per obtenir totes les files d'una taula anomenada "Products" i mostri els resultats a la consola.

Exercici 3: Utilitzar DataSet

Escriu un programa que utilitzi un DataSet per emmagatzemar i mostrar les dades d'una taula anomenada "Orders".

Solucions als Exercicis

Solució a l'Exercici 1

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("Connexió establerta correctament.");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error en establir la connexió: " + ex.Message);
            }
        }
    }
}

Solució a l'Exercici 2

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            
            string query = "SELECT * FROM Products";
            SqlCommand command = new SqlCommand(query, connection);
            
            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    Console.WriteLine($"ID: {reader["ProductID"]}, Nom: {reader["ProductName"]}");
                }
            }
        }
    }
}

Solució a l'Exercici 3

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

class Program
{
    static void Main()
    {
        string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            
            string query = "SELECT * FROM Orders";
            SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
            DataSet dataSet = new DataSet();
            
            adapter.Fill(dataSet, "Orders");
            
            foreach (DataRow row in dataSet.Tables["Orders"].Rows)
            {
                Console.WriteLine($"ID: {row["OrderID"]}, Data: {row["OrderDate"]}");
            }
        }
    }
}

Conclusió

En aquest tema, hem après com connectar una aplicació C# a una base de dades utilitzant ADO.NET. Hem vist com establir una connexió, executar consultes SQL i manipular dades utilitzant DataReader i DataSet. Aquests coneixements són fonamentals per a qualsevol desenvolupador que necessiti treballar amb bases de dades en les seves aplicacions.

© Copyright 2024. Tots els drets reservats