En este tema, aprenderemos cómo conectar aplicaciones C# a bases de datos, realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) y manejar conexiones de manera eficiente. Utilizaremos ADO.NET, una tecnología que proporciona acceso a datos desde bases de datos relacionales.

Contenido

  1. Introducción a ADO.NET
  2. Configuración del Entorno
  3. Conexión a una Base de Datos
  4. Operaciones CRUD
  5. Ejercicios Prácticos

  1. Introducción a ADO.NET

ADO.NET es un conjunto de componentes que permiten a los desarrolladores interactuar con bases de datos. Proporciona una manera eficiente de acceder y manipular datos en aplicaciones .NET.

Conceptos Clave:

  • Connection: Representa una conexión a una base de datos.
  • Command: Representa una instrucción SQL que se ejecuta en una base de datos.
  • DataReader: Proporciona una manera de leer datos de una base de datos de manera eficiente.
  • DataSet: Representa un conjunto de datos en memoria que puede incluir múltiples tablas.

  1. Configuración del Entorno

Antes de comenzar, asegúrate de tener instalado:

  • Visual Studio
  • SQL Server (o cualquier otra base de datos relacional)

  1. Conexión a una Base de Datos

Paso 1: Crear una Base de Datos

Para este ejemplo, utilizaremos SQL Server. Crea una base de datos llamada SampleDB y una tabla llamada Users con la siguiente estructura:

CREATE TABLE Users (
    Id INT PRIMARY KEY IDENTITY,
    Name NVARCHAR(50),
    Email NVARCHAR(50)
);

Paso 2: Configurar la Cadena de Conexión

La cadena de conexión es una cadena que contiene la información necesaria para conectarse a la base de datos.

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

Paso 3: Establecer la Conexión

Utilizaremos la clase SqlConnection para establecer una conexión con la base de datos.

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server_name;Database=SampleDB;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("Conexión establecida exitosamente.");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error al conectar a la base de datos: " + ex.Message);
            }
        }
    }
}

  1. Operaciones CRUD

Crear (Insertar)

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server_name;Database=SampleDB;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
            
            using (SqlCommand command = new SqlCommand(query, connection))
            {
                command.Parameters.AddWithValue("@Name", "John Doe");
                command.Parameters.AddWithValue("@Email", "[email protected]");
                
                int result = command.ExecuteNonQuery();
                
                if (result > 0)
                {
                    Console.WriteLine("Usuario insertado exitosamente.");
                }
            }
        }
    }
}

Leer (Seleccionar)

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server_name;Database=SampleDB;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "SELECT * FROM Users";
            
            using (SqlCommand command = new SqlCommand(query, connection))
            {
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Console.WriteLine($"ID: {reader["Id"]}, Name: {reader["Name"]}, Email: {reader["Email"]}");
                    }
                }
            }
        }
    }
}

Actualizar

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server_name;Database=SampleDB;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "UPDATE Users SET Email = @Email WHERE Name = @Name";
            
            using (SqlCommand command = new SqlCommand(query, connection))
            {
                command.Parameters.AddWithValue("@Name", "John Doe");
                command.Parameters.AddWithValue("@Email", "[email protected]");
                
                int result = command.ExecuteNonQuery();
                
                if (result > 0)
                {
                    Console.WriteLine("Usuario actualizado exitosamente.");
                }
            }
        }
    }
}

Eliminar

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server_name;Database=SampleDB;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "DELETE FROM Users WHERE Name = @Name";
            
            using (SqlCommand command = new SqlCommand(query, connection))
            {
                command.Parameters.AddWithValue("@Name", "John Doe");
                
                int result = command.ExecuteNonQuery();
                
                if (result > 0)
                {
                    Console.WriteLine("Usuario eliminado exitosamente.");
                }
            }
        }
    }
}

  1. Ejercicios Prácticos

Ejercicio 1: Insertar un Nuevo Usuario

Escribe un programa que inserte un nuevo usuario en la tabla Users.

Ejercicio 2: Leer y Mostrar Todos los Usuarios

Escribe un programa que lea y muestre todos los usuarios de la tabla Users.

Ejercicio 3: Actualizar el Email de un Usuario

Escribe un programa que actualice el email de un usuario específico.

Ejercicio 4: Eliminar un Usuario

Escribe un programa que elimine un usuario específico de la tabla Users.

Soluciones

Ejercicio 1: Insertar un Nuevo Usuario

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server_name;Database=SampleDB;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
            
            using (SqlCommand command = new SqlCommand(query, connection))
            {
                command.Parameters.AddWithValue("@Name", "Jane Doe");
                command.Parameters.AddWithValue("@Email", "[email protected]");
                
                int result = command.ExecuteNonQuery();
                
                if (result > 0)
                {
                    Console.WriteLine("Usuario insertado exitosamente.");
                }
            }
        }
    }
}

Ejercicio 2: Leer y Mostrar Todos los Usuarios

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server_name;Database=SampleDB;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "SELECT * FROM Users";
            
            using (SqlCommand command = new SqlCommand(query, connection))
            {
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Console.WriteLine($"ID: {reader["Id"]}, Name: {reader["Name"]}, Email: {reader["Email"]}");
                    }
                }
            }
        }
    }
}

Ejercicio 3: Actualizar el Email de un Usuario

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server_name;Database=SampleDB;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "UPDATE Users SET Email = @Email WHERE Name = @Name";
            
            using (SqlCommand command = new SqlCommand(query, connection))
            {
                command.Parameters.AddWithValue("@Name", "Jane Doe");
                command.Parameters.AddWithValue("@Email", "[email protected]");
                
                int result = command.ExecuteNonQuery();
                
                if (result > 0)
                {
                    Console.WriteLine("Usuario actualizado exitosamente.");
                }
            }
        }
    }
}

Ejercicio 4: Eliminar un Usuario

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server_name;Database=SampleDB;User Id=your_username;Password=your_password;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "DELETE FROM Users WHERE Name = @Name";
            
            using (SqlCommand command = new SqlCommand(query, connection))
            {
                command.Parameters.AddWithValue("@Name", "Jane Doe");
                
                int result = command.ExecuteNonQuery();
                
                if (result > 0)
                {
                    Console.WriteLine("Usuario eliminado exitosamente.");
                }
            }
        }
    }
}

Conclusión

En esta sección, hemos aprendido cómo conectar una aplicación C# a una base de datos utilizando ADO.NET. Hemos cubierto cómo realizar operaciones CRUD básicas y hemos proporcionado ejercicios prácticos para reforzar los conceptos aprendidos. Con esta base, estarás preparado para manejar datos en tus aplicaciones de manera eficiente y segura.

© Copyright 2024. Todos los derechos reservados