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
- Introducción a ADO.NET
- Configuración del Entorno
- Conexión a una Base de Datos
- Operaciones CRUD
- Ejercicios Prácticos
- 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.
- Configuración del Entorno
Antes de comenzar, asegúrate de tener instalado:
- Visual Studio
- SQL Server (o cualquier otra base de datos relacional)
- 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:
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); } } } }
- 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."); } } } } }
- 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.
Curso de Programación en C#
Módulo 1: Introducción a C#
- Introducción a C#
- Configuración del Entorno de Desarrollo
- Programa Hola Mundo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
Módulo 2: Estructuras de Control
Módulo 3: Programación Orientada a Objetos
- Clases y Objetos
- Métodos
- Constructores y Destructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Conceptos Avanzados de C#
- Interfaces
- Delegados y Eventos
- Genéricos
- Colecciones
- LINQ (Consulta Integrada en el Lenguaje)
- Programación Asíncrona
Módulo 5: Trabajando con Datos
Módulo 6: Temas Avanzados
- Reflexión
- Atributos
- Programación Dinámica
- Gestión de Memoria y Recolección de Basura
- Multihilo y Programación Paralela
Módulo 7: Construcción de Aplicaciones
Módulo 8: Mejores Prácticas y Patrones de Diseño
- Estándares de Codificación y Mejores Prácticas
- Patrones de Diseño
- Pruebas Unitarias
- Revisión y Refactorización de Código