{"id":1816,"date":"2023-11-20T10:35:19","date_gmt":"2023-11-20T13:35:19","guid":{"rendered":"https:\/\/stackcodelab.com\/blog\/?p=1816"},"modified":"2023-12-03T11:07:41","modified_gmt":"2023-12-03T14:07:41","slug":"acceso-a-bases-de-datos-con-c","status":"publish","type":"post","link":"https:\/\/stackcodelab.com\/blog\/acceso-a-bases-de-datos-con-c\/","title":{"rendered":"Acceso a Bases de Datos con C#"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">El acceso a bases de datos desempe\u00f1a un papel fundamental en el desarrollo de aplicaciones C# y es esencial en numerosos aspectos. Aqu\u00ed tienes una presentaci\u00f3n de la importancia del acceso a bases de datos en aplicaciones C#:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Persistencia de Datos<\/strong>: Una de las razones m\u00e1s evidentes para acceder a bases de datos en aplicaciones C# es la persistencia de datos. Las aplicaciones necesitan almacenar informaci\u00f3n de manera permanente para que los datos sobrevivan m\u00e1s all\u00e1 de la ejecuci\u00f3n de la aplicaci\u00f3n. Las bases de datos proporcionan un medio seguro y eficiente para lograrlo.<\/li>\n\n\n\n<li><strong>Gesti\u00f3n de Datos Complejos<\/strong>: En aplicaciones empresariales o de nivel empresarial, a menudo se deben gestionar conjuntos de datos complejos con m\u00faltiples tablas y relaciones. Las bases de datos relacionales como SQL Server, MySQL o PostgreSQL permiten modelar y gestionar estos datos de manera eficaz.<\/li>\n\n\n\n<li><strong>B\u00fasqueda y Consulta Eficiente<\/strong>: Las bases de datos est\u00e1n dise\u00f1adas para realizar b\u00fasquedas y consultas de datos de manera eficiente, lo que es esencial cuando se manejan grandes vol\u00famenes de informaci\u00f3n. Esto permite a las aplicaciones C# recuperar r\u00e1pidamente los datos que necesitan, reduciendo la latencia y mejorando la experiencia del usuario.<\/li>\n\n\n\n<li><strong>Integridad de Datos<\/strong>: Las bases de datos proporcionan mecanismos para garantizar la integridad de los datos. Las restricciones, claves primarias y secundarias, as\u00ed como las transacciones, permiten mantener los datos coherentes y precisos, lo que es crucial en aplicaciones donde la integridad de los datos es primordial.<\/li>\n\n\n\n<li><strong>Escalabilidad<\/strong>: Las bases de datos escalables permiten que las aplicaciones crezcan a medida que aumenta la demanda. Esto es esencial en aplicaciones que esperan un alto tr\u00e1fico o que necesitan manejar grandes conjuntos de datos.<\/li>\n\n\n\n<li><strong>Seguridad de Datos<\/strong>: Las bases de datos ofrecen medidas de seguridad robustas para proteger los datos confidenciales. Esto incluye autenticaci\u00f3n, autorizaci\u00f3n y cifrado, entre otros mecanismos de seguridad. Para aplicaciones que manejan informaci\u00f3n sensible, la seguridad es una preocupaci\u00f3n principal.<\/li>\n\n\n\n<li><strong>Historial y Auditor\u00eda<\/strong>: En muchas aplicaciones, es importante llevar un registro de los cambios en los datos. Las bases de datos permiten el seguimiento del historial de datos y la auditor\u00eda, lo que es valioso para el cumplimiento de normativas y la resoluci\u00f3n de problemas.<\/li>\n\n\n\n<li><strong>Acceso Concurrente<\/strong>: Las bases de datos est\u00e1n dise\u00f1adas para manejar m\u00faltiples accesos concurrentes de manera eficiente. Esto es esencial en aplicaciones que tienen m\u00faltiples usuarios que acceden y actualizan datos al mismo tiempo.<\/li>\n\n\n\n<li><strong>Portabilidad<\/strong>: El acceso a bases de datos a trav\u00e9s de tecnolog\u00edas como ADO.NET en C# proporciona portabilidad. Puedes dise\u00f1ar tu aplicaci\u00f3n para funcionar con diferentes motores de bases de datos sin tener que reescribir todo el c\u00f3digo.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">En resumen, el acceso a bases de datos es un componente cr\u00edtico en el desarrollo de aplicaciones C#. Proporciona un medio para almacenar y gestionar datos, garantiza la integridad de los datos, mejora la eficiencia de las operaciones de b\u00fasqueda y consulta, y proporciona una base s\u00f3lida para la escalabilidad y la seguridad de datos. Dominar las t\u00e9cnicas de acceso a bases de datos es esencial para crear aplicaciones robustas y efectivas en C#.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>Enfoque en la conexi\u00f3n a bases de datos SQL utilizando ADO.NET y el uso de Entity Framework Core.<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo, nos centraremos en el acceso a bases de datos SQL utilizando dos enfoques principales en C#: ADO.NET y Entity Framework Core.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ADO.NET (ActiveX Data Objects para .NET)<\/strong> es un conjunto de clases en el framework .NET que proporciona una forma de conectarse a bases de datos, recuperar, insertar, actualizar y eliminar datos. ADO.NET es vers\u00e1til y se puede utilizar con una variedad de motores de bases de datos. Utiliza una arquitectura basada en conexiones, comandos y conjuntos de resultados para interactuar con la base de datos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Entity Framework Core (EF Core)<\/strong> es un marco de mapeo objeto-relacional (ORM) que simplifica el acceso a bases de datos relacionales. Permite a los desarrolladores trabajar con objetos en lugar de escribir consultas SQL directamente. EF Core genera consultas SQL autom\u00e1ticamente en funci\u00f3n del modelo de datos de la aplicaci\u00f3n. Adem\u00e1s, admite m\u00faltiples proveedores de bases de datos, lo que facilita la migraci\u00f3n entre sistemas de gesti\u00f3n de bases de datos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, te proporcionar\u00e9 ejemplos de c\u00f3mo usar ADO.NET y Entity Framework Core para acceder a bases de datos SQL en C#:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a><strong>Ejemplo de Uso de ADO.NET para Conectar y Consultar una Base de Datos SQL:<\/strong><\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>using System;\r\nusing System.Data.SqlClient;\r\n\r\nclass Program\r\n{\r\n    static void Main()\r\n    {\r\n        string connectionString = \"Data Source=MiServidor;Initial Catalog=MiBaseDeDatos;User ID=MiUsuario;Password=MiContrase\u00f1a\";\r\n        using (SqlConnection connection = new SqlConnection(connectionString))\r\n        {\r\n            connection.Open();\r\n\r\n            string query = \"SELECT Nombre, Apellido FROM Empleados\";\r\n            using (SqlCommand command = new SqlCommand(query, connection))\r\n            {\r\n                using (SqlDataReader reader = command.ExecuteReader())\r\n                {\r\n                    while (reader.Read())\r\n                    {\r\n                        string nombre = reader&#91;\"Nombre\"].ToString();\r\n                        string apellido = reader&#91;\"Apellido\"].ToString();\r\n                        Console.WriteLine($\"Nombre: {nombre}, Apellido: {apellido}\");\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><a><strong>Ejemplo de Uso de Entity Framework Core para Conectar y Consultar una Base de Datos SQL:<\/strong><\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Microsoft.EntityFrameworkCore;\r\nusing System;\r\nusing System.Linq;\r\n\r\n\/\/ Definici\u00f3n de una clase de modelo\r\npublic class Empleado\r\n{\r\n    public int Id { get; set; }\r\n    public string Nombre { get; set; }\r\n    public string Apellido { get; set; }\r\n}\r\n\r\n\/\/ Contexto de base de datos\r\npublic class ApplicationDbContext : DbContext\r\n{\r\n    public DbSet&lt;Empleado> Empleados { get; set; }\r\n\r\n    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\r\n    {\r\n        optionsBuilder.UseSqlServer(\"Data Source=MiServidor;Initial Catalog=MiBaseDeDatos;User ID=MiUsuario;Password=MiContrase\u00f1a\");\r\n    }\r\n}\r\n\r\nclass Program\r\n{\r\n    static void Main()\r\n    {\r\n        using (var context = new ApplicationDbContext())\r\n        {\r\n            var empleados = context.Empleados.ToList();\r\n            foreach (var empleado in empleados)\r\n            {\r\n                Console.WriteLine($\"Nombre: {empleado.Nombre}, Apellido: {empleado.Apellido}\");\r\n            }\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ambos enfoques tienen sus ventajas y desventajas, y la elecci\u00f3n entre ADO.NET y Entity Framework Core depende de los requisitos espec\u00edficos de tu proyecto y de tu preferencia personal. ADO.NET proporciona un control m\u00e1s granular sobre las consultas SQL, mientras que Entity Framework Core simplifica muchas tareas comunes de acceso a datos mediante el mapeo de objetos a tablas de bases de datos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a><strong>Conexi\u00f3n a Bases de Datos SQL utilizando ADO.NET:<\/strong><\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ADO.NET (ActiveX Data Objects para .NET) es una tecnolog\u00eda de acceso a datos en C# que permite a los desarrolladores interactuar con bases de datos relacionales, como SQL Server, Oracle, MySQL y otros. ADO.NET proporciona un conjunto de clases y componentes que permiten establecer conexiones, ejecutar consultas SQL y comandos, y trabajar con conjuntos de resultados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed tienes una explicaci\u00f3n de los pasos para establecer una conexi\u00f3n a una base de datos SQL utilizando ADO.NET y ejecutar consultas SQL:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 1: Importar Espacios de Nombres<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using System;\r\nusing System.Data;\r\nusing System.Data.SqlClient;\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 2: Establecer una Cadena de Conexi\u00f3n<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>string connectionString = \"Data Source=MiServidor;Initial Catalog=MiBaseDeDatos;User ID=MiUsuario;Password=MiContrase\u00f1a\";<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Reemplaza \u00abMiServidor\u00bb, \u00abMiBaseDeDatos\u00bb, \u00abMiUsuario\u00bb y \u00abMiContrase\u00f1a\u00bb con los detalles de tu servidor y base de datos SQL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 3: Crear una Conexi\u00f3n<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using (SqlConnection connection = new SqlConnection(connectionString))\r\n{\r\n    \/\/ Abre la conexi\u00f3n\r\n    connection.Open();\r\n    \r\n    \/\/ Aqu\u00ed se pueden realizar operaciones de base de datos\r\n    \r\n    \/\/ Cierra autom\u00e1ticamente la conexi\u00f3n al salir del bloque \"using\"\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 4: Ejecutar Consultas SQL<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>string query = \"SELECT Nombre, Apellido FROM Empleados\";\r\nusing (SqlCommand command = new SqlCommand(query, connection))\r\n{\r\n    using (SqlDataReader reader = command.ExecuteReader())\r\n    {\r\n        while (reader.Read())\r\n        {\r\n            string nombre = reader&#91;\"Nombre\"].ToString();\r\n            string apellido = reader&#91;\"Apellido\"].ToString();\r\n            Console.WriteLine($\"Nombre: {nombre}, Apellido: {apellido}\");\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este ejemplo, hemos realizado una conexi\u00f3n a la base de datos SQL, ejecutado una consulta SQL para seleccionar datos de la tabla \u00abEmpleados\u00bb y le\u00eddo los resultados utilizando un <code>SqlDataReader<\/code>. Puedes adaptar este c\u00f3digo para realizar otras operaciones de lectura y escritura seg\u00fan tus necesidades.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recuerda manejar adecuadamente las excepciones y asegurarte de cerrar la conexi\u00f3n despu\u00e9s de su uso, lo cual hemos hecho en el ejemplo utilizando un bloque <code>using<\/code>. Esto garantiza la liberaci\u00f3n de recursos de manera adecuada y evita problemas de memoria y conexiones no cerradas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a><strong>Consulta SQL para Seleccionar Datos:<\/strong><\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>string selectQuery = \"SELECT Nombre, Apellido FROM Empleados\";\r\nusing (SqlCommand command = new SqlCommand(selectQuery, connection))\r\n{\r\n    using (SqlDataReader reader = command.ExecuteReader())\r\n    {\r\n        while (reader.Read())\r\n        {\r\n            string nombre = reader&#91;\"Nombre\"].ToString();\r\n            string apellido = reader&#91;\"Apellido\"].ToString();\r\n            Console.WriteLine($\"Nombre: {nombre}, Apellido: {apellido}\");\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo ejecuta una consulta SQL que selecciona los campos \u00abNombre\u00bb y \u00abApellido\u00bb de la tabla \u00abEmpleados\u00bb y muestra los resultados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a><strong>Consulta SQL para Insertar Datos:<\/strong><\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>string insertQuery = \"INSERT INTO Empleados (Nombre, Apellido) VALUES ('Juan', 'P\u00e9rez')\";\r\nusing (SqlCommand command = new SqlCommand(insertQuery, connection))\r\n{\r\n    int rowsAffected = command.ExecuteNonQuery();\r\n    Console.WriteLine($\"Se insertaron {rowsAffected} registros.\");\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo ejecuta un comando SQL para insertar un nuevo registro en la tabla \u00abEmpleados\u00bb con los valores \u00abJuan\u00bb y \u00abP\u00e9rez\u00bb en los campos \u00abNombre\u00bb y \u00abApellido\u00bb, respectivamente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a><strong>Consulta SQL para Actualizar Datos:<\/strong><\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>string updateQuery = \"UPDATE Empleados SET Apellido = 'G\u00f3mez' WHERE Nombre = 'Juan'\";\r\nusing (SqlCommand command = new SqlCommand(updateQuery, connection))\r\n{\r\n    int rowsAffected = command.ExecuteNonQuery();\r\n    Console.WriteLine($\"Se actualizaron {rowsAffected} registros.\");\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo ejecuta un comando SQL que actualiza registros en la tabla \u00abEmpleados\u00bb estableciendo el apellido como \u00abG\u00f3mez\u00bb donde el nombre es \u00abJuan\u00bb.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a><strong>Consulta SQL para Eliminar Datos:<\/strong><\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>string deleteQuery = \"DELETE FROM Empleados WHERE Nombre = 'Juan'\";\r\nusing (SqlCommand command = new SqlCommand(deleteQuery, connection))\r\n{\r\n    int rowsAffected = command.ExecuteNonQuery();\r\n    Console.WriteLine($\"Se eliminaron {rowsAffected} registros.\");\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo ejecuta un comando SQL que elimina registros de la tabla \u00abEmpleados\u00bb donde el nombre es \u00abJuan\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aseg\u00farate de adaptar estos ejemplos a tu esquema de base de datos y necesidades espec\u00edficas. Tambi\u00e9n, ten en cuenta que es importante manejar las excepciones que puedan surgir durante la ejecuci\u00f3n de estas consultas y comandos SQL.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a><strong>Uso de Entity Framework Core para el Acceso a Datos:<\/strong><\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, te mostrar\u00e9 ejemplos de c\u00f3mo utilizar Entity Framework Core para el acceso a datos en una aplicaci\u00f3n C#.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Configuraci\u00f3n de Entity Framework Core:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para comenzar, debes configurar Entity Framework Core en tu proyecto. Esto implica agregar las dependencias necesarias y definir un contexto de base de datos. A continuaci\u00f3n, se muestra un ejemplo de c\u00f3mo configurar Entity Framework Core en una aplicaci\u00f3n ASP.NET Core:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Instala las dependencias necesarias:\r\n\/\/ Microsoft.EntityFrameworkCore\r\n\/\/ Microsoft.EntityFrameworkCore.Design\r\n\/\/ Microsoft.EntityFrameworkCore.SqlServer (o el proveedor de base de datos de tu elecci\u00f3n)\r\n\r\nusing Microsoft.EntityFrameworkCore;\r\nusing System;\r\n\r\npublic class ApplicationDbContext : DbContext\r\n{\r\n    public ApplicationDbContext(DbContextOptions&lt;ApplicationDbContext> options)\r\n        : base(options)\r\n    {\r\n    }\r\n\r\n    public DbSet&lt;Empleado> Empleados { get; set; }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Definici\u00f3n de un Modelo:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luego, define una clase de modelo que represente una tabla en tu base de datos. Por ejemplo, aqu\u00ed hay una clase de modelo \u00abEmpleado\u00bb:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Empleado\r\n{\r\n    public int Id { get; set; }\r\n    public string Nombre { get; set; }\r\n    public string Apellido { get; set; }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. Consultas LINQ con Entity Framework Core:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez que tengas configurado Entity Framework Core y definidos tus modelos, puedes realizar consultas utilizando LINQ. Aqu\u00ed hay algunos ejemplos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consulta para Obtener Todos los Empleados:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var empleados = dbContext.Empleados.ToList();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consulta para Filtrar Empleados por Apellido:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var empleadosConApellidoGomez = dbContext.Empleados\r\n    .Where(e => e.Apellido == \"G\u00f3mez\")\r\n    .ToList();\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consulta para Agregar un Nuevo Empleado:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var nuevoEmpleado = new Empleado { Nombre = \"Juan\", Apellido = \"P\u00e9rez\" };\r\ndbContext.Empleados.Add(nuevoEmpleado);\r\ndbContext.SaveChanges();\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consulta para Actualizar un Empleado:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var empleadoAActualizar = dbContext.Empleados.FirstOrDefault(e => e.Id == 1);\r\nif (empleadoAActualizar != null)\r\n{\r\n    empleadoAActualizar.Apellido = \"G\u00f3mez\";\r\n    dbContext.SaveChanges();\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consulta para Eliminar un Empleado:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var empleadoAEliminar = dbContext.Empleados.FirstOrDefault(e => e.Id == 2);\r\nif (empleadoAEliminar != null)\r\n{\r\n    dbContext.Empleados.Remove(empleadoAEliminar);\r\n    dbContext.SaveChanges();\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Recuerda que en estos ejemplos, <code>dbContext <\/code>representa una instancia de tu contexto de base de datos (<code>ApplicationDbContext<\/code>) que se ha inyectado en tu aplicaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este es solo un vistazo r\u00e1pido a c\u00f3mo utilizar Entity Framework Core para el acceso a datos en C#. La configuraci\u00f3n y las consultas pueden variar seg\u00fan las necesidades espec\u00edficas de tu proyecto y la base de datos que est\u00e9s utilizando.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a><strong>Ejemplo: Conexi\u00f3n y Consulta de Datos con ADO.NET:<\/strong><\/a><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Establecimiento de una conexi\u00f3n a una base de datos SQL utilizando ADO.NET.<\/li>\n\n\n\n<li>Ejemplo de consulta SQL para recuperar datos y mostrarlos en una aplicaci\u00f3n C#.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed tienes un ejemplo de c\u00f3mo establecer una conexi\u00f3n a una base de datos SQL utilizando ADO.NET y realizar una consulta SQL para recuperar datos en una aplicaci\u00f3n C#:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using System;\r\nusing System.Data;\r\nusing System.Data.SqlClient;\r\n\r\nclass Program\r\n{\r\n    static void Main()\r\n    {\r\n        string connectionString = \"Data Source=TuServidor;Initial Catalog=TuBaseDeDatos;User ID=TUUsuario;Password=TuContrase\u00f1a\";\r\n\r\n        using (SqlConnection connection = new SqlConnection(connectionString))\r\n        {\r\n            try\r\n            {\r\n                connection.Open();\r\n                \/\/ Consulta SQL para seleccionar todos los empleados de una tabla\r\n                string query = \"SELECT * FROM Empleados\";\r\n                \r\n                using (SqlCommand command = new SqlCommand(query, connection))\r\n                {\r\n                    using (SqlDataReader reader = command.ExecuteReader())\r\n                    {\r\n                        Console.WriteLine(\"Lista de Empleados:\\n\");\r\n\r\n                        while (reader.Read())\r\n                        {\r\n                            int empleadoId = reader.GetInt32(0);\r\n                            string nombre = reader.GetString(1);\r\n                            string apellido = reader.GetString(2);\r\n\r\n                            Console.WriteLine($\"ID: {empleadoId}, Nombre: {nombre}, Apellido: {apellido}\");\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Console.WriteLine($\"Error: {ex.Message}\");\r\n            }\r\n            finally\r\n            {\r\n                connection.Close();\r\n            }\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aseg\u00farate de reemplazar los valores en la cadena de conexi\u00f3n (<code>connectionString<\/code>) con los correspondientes a tu servidor SQL, base de datos, usuario y contrase\u00f1a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo establece una conexi\u00f3n a la base de datos, ejecuta una consulta SQL para seleccionar todos los empleados de la tabla \u00abEmpleados\u00bb, recupera los datos y los muestra en la consola.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ten en cuenta que este es solo un ejemplo b\u00e1sico de c\u00f3mo usar ADO.NET para conectarse a una base de datos SQL y realizar una consulta. En una aplicaci\u00f3n real, es importante manejar las excepciones adecuadamente y seguir las mejores pr\u00e1cticas de seguridad, como el uso de par\u00e1metros en las consultas SQL para prevenir la inyecci\u00f3n SQL.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a><strong>Ejemplo: Uso de Entity Framework Core en una Aplicaci\u00f3n C#:<\/strong><\/a><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Configuraci\u00f3n de Entity Framework Core en una aplicaci\u00f3n C#.<\/li>\n\n\n\n<li>Realizaci\u00f3n de consultas utilizando LINQ y Entity Framework Core para acceder y manipular datos.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed tienes un ejemplo de c\u00f3mo configurar Entity Framework Core en una aplicaci\u00f3n C# y realizar consultas utilizando LINQ y Entity Framework Core para acceder y manipular datos en una base de datos SQL:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que tienes una clase <code>Empleado<\/code> y una base de datos SQL llamada <code>EmpresaDB<\/code> con una tabla llamada <code>Empleados<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Microsoft.EntityFrameworkCore;\r\nusing System;\r\nusing System.Linq;\r\n\r\n\/\/ Definici\u00f3n de la clase Empleado que se mapear\u00e1 a la tabla Empleados en la base de datos\r\npublic class Empleado\r\n{\r\n    public int Id { get; set; }\r\n    public string Nombre { get; set; }\r\n    public string Apellido { get; set; }\r\n}\r\n\r\n\/\/ Contexto de Entity Framework Core\r\npublic class ApplicationDbContext : DbContext\r\n{\r\n    public DbSet&lt;Empleado> Empleados { get; set; }\r\n\r\n    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\r\n    {\r\n        optionsBuilder.UseSqlServer(\"Data Source=TuServidor;Initial Catalog=EmpresaDB;User ID=TUUsuario;Password=TuContrase\u00f1a\");\r\n    }\r\n}\r\n\r\nclass Program\r\n{\r\n    static void Main()\r\n    {\r\n        using (var context = new ApplicationDbContext())\r\n        {\r\n            \/\/ Consulta LINQ para seleccionar todos los empleados\r\n            var empleados = context.Empleados.ToList();\r\n\r\n            Console.WriteLine(\"Lista de Empleados:\\n\");\r\n\r\n            foreach (var empleado in empleados)\r\n            {\r\n                Console.WriteLine($\"ID: {empleado.Id}, Nombre: {empleado.Nombre}, Apellido: {empleado.Apellido}\");\r\n            }\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aseg\u00farate de reemplazar los valores en la cadena de conexi\u00f3n en <code>OnConfiguring<\/code> con los correspondientes a tu servidor SQL, base de datos, usuario y contrase\u00f1a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo configura Entity Framework Core para acceder a la base de datos, define una clase <code>Empleado<\/code> que se mapear\u00e1 a la tabla <code>Empleados<\/code> y realiza una consulta utilizando LINQ para seleccionar todos los empleados de la tabla. Luego, muestra los datos en la consola.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entity Framework Core simplifica el acceso a la base de datos y la manipulaci\u00f3n de datos en comparaci\u00f3n con ADO.NET, ya que utiliza consultas LINQ en lugar de consultas SQL directas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resumen:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo aprendimos sobre las siguientes \u00e1reas clave:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Conexi\u00f3n a Bases de Datos SQL utilizando ADO.NET: <\/strong>Aprendimos c\u00f3mo establecer una conexi\u00f3n a una base de datos SQL utilizando ADO.NET. Exploramos la ejecuci\u00f3n de consultas SQL y comandos para realizar operaciones de lectura y escritura en la base de datos.<\/li>\n\n\n\n<li><strong>Consultas SQL y Ejecuci\u00f3n de Comandos: <\/strong>Comprendimos c\u00f3mo usar SQL para realizar consultas a bases de datos y seleccionar datos espec\u00edficos. Vimos ejemplos de consultas SQL simples y complejas, as\u00ed como la ejecuci\u00f3n de comandos para insertar, actualizar y eliminar registros en la base de datos.<\/li>\n\n\n\n<li><strong>Uso de Entity Framework Core para el Acceso a Datos: <\/strong>Introdujimos Entity Framework Core como un ORM (Mapeo Objeto-Relacional) en C#. Configuramos Entity Framework Core en una aplicaci\u00f3n C#. Aprendimos a realizar consultas utilizando LINQ y Entity Framework Core para acceder y manipular datos en una base de datos SQL.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">El resumen clave de este cap\u00edtulo es que existen varias formas de acceder a datos en aplicaciones C#, y la elecci\u00f3n de la tecnolog\u00eda adecuada depende de las necesidades y requerimientos del proyecto. Tanto ADO.NET como Entity Framework Core son herramientas poderosas para interactuar con bases de datos, y la elecci\u00f3n entre ellas depender\u00e1 de factores como la complejidad del proyecto, la preferencia personal y los objetivos de desarrollo. En general, este cap\u00edtulo subraya la importancia de seleccionar la tecnolog\u00eda de acceso a datos adecuada y c\u00f3mo trabajar con bases de datos SQL en aplicaciones C#, ya que el acceso eficiente y seguro a los datos es fundamental en el desarrollo de software moderno.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El acceso a bases de datos desempe\u00f1a un papel fundamental en el desarrollo de aplicaciones C# y es esencial en numerosos aspectos. Aqu\u00ed tienes una presentaci\u00f3n de la importancia del acceso a bases de datos en aplicaciones C#: En resumen, el acceso a bases de datos es un componente cr\u00edtico en el desarrollo de aplicaciones [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2096,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[34],"tags":[],"class_list":["post-1816","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-y-otras-hierbas"],"uagb_featured_image_src":{"full":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Acceso-a-Bases-de-Datos-con-C.jpg",1000,666,false],"thumbnail":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Acceso-a-Bases-de-Datos-con-C-150x150.jpg",150,150,true],"medium":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Acceso-a-Bases-de-Datos-con-C-300x200.jpg",300,200,true],"medium_large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Acceso-a-Bases-de-Datos-con-C-768x511.jpg",768,511,true],"large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Acceso-a-Bases-de-Datos-con-C.jpg",1000,666,false],"1536x1536":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Acceso-a-Bases-de-Datos-con-C.jpg",1000,666,false],"2048x2048":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Acceso-a-Bases-de-Datos-con-C.jpg",1000,666,false]},"uagb_author_info":{"display_name":"arquitecto","author_link":"https:\/\/stackcodelab.com\/blog\/author\/arquitecto\/"},"uagb_comment_info":2,"uagb_excerpt":"El acceso a bases de datos desempe\u00f1a un papel fundamental en el desarrollo de aplicaciones C# y es esencial en numerosos aspectos. Aqu\u00ed tienes una presentaci\u00f3n de la importancia del acceso a bases de datos en aplicaciones C#: En resumen, el acceso a bases de datos es un componente cr\u00edtico en el desarrollo de aplicaciones&hellip;","_links":{"self":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/1816","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/comments?post=1816"}],"version-history":[{"count":1,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/1816\/revisions"}],"predecessor-version":[{"id":1817,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/1816\/revisions\/1817"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media\/2096"}],"wp:attachment":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media?parent=1816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/categories?post=1816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/tags?post=1816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}