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.
Curs de Programació en C#
Mòdul 1: Introducció al C#
- Introducció al C#
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control
Mòdul 3: Programació Orientada a Objectes
Mòdul 4: Conceptes Avançats de C#
- Interfícies
- Delegats i Esdeveniments
- Genèrics
- Col·leccions
- LINQ (Consulta Integrada al Llenguatge)
- Programació Asíncrona
Mòdul 5: Treballant amb Dades
Mòdul 6: Temes Avançats
- Reflexió
- Atributs
- Programació Dinàmica
- Gestió de Memòria i Recollida d'Escombraries
- Multifil i Programació Paral·lela
Mòdul 7: Construcció d'Aplicacions
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Estàndards de Codificació i Millors Pràctiques
- Patrons de Disseny
- Proves Unitàries
- Revisió de Codi i Refactorització