Introducción a ADO.NET Command
ADO.NET Command es una clase en el framework de .NET que se utiliza para ejecutar comandos SQL en una base de datos. Es una parte fundamental de ADO.NET, que es una tecnología de acceso a datos utilizada para interactuar con bases de datos relacionales.
El objeto ADO.NET Command se utiliza para enviar comandos SQL a una base de datos y recibir los resultados de la ejecución. Puede ejecutar comandos como consultas SELECT, inserciones, actualizaciones y eliminaciones en una base de datos.
Creación de un objeto ADO.NET Command
Para utilizar ADO.NET Command, primero debemos crear un objeto de la clase SqlCommand. Esto se puede hacer de varias maneras, pero la forma más común es utilizando el constructor sin parámetros y luego asignando la cadena de conexión y el comando SQL.
Aquí hay un ejemplo de cómo crear un objeto SqlCommand:
«`csharp
SqlCommand command = new SqlCommand();
command.Connection = new SqlConnection(«cadena de conexión»);
command.CommandText = «comando SQL»;
«`
En este ejemplo, creamos un objeto SqlCommand sin parámetros y luego asignamos la cadena de conexión y el comando SQL utilizando las propiedades Connection y CommandText respectivamente.
Configuración de parámetros en un ADO.NET Command
Una de las características más importantes de ADO.NET Command es la capacidad de utilizar parámetros en los comandos SQL. Los parámetros permiten pasar valores dinámicos a los comandos y evitan problemas de seguridad como la inyección de SQL.
Para configurar parámetros en un objeto SqlCommand, podemos utilizar la propiedad Parameters. Esta propiedad es una colección de objetos SqlParameter, que representan los parámetros en el comando SQL.
Aquí hay un ejemplo de cómo configurar un parámetro en un objeto SqlCommand:
«`csharp
SqlCommand command = new SqlCommand();
command.Connection = new SqlConnection(«cadena de conexión»);
command.CommandText = «SELECT * FROM tabla WHERE columna = @parametro»;
command.Parameters.AddWithValue(«@parametro», valor);
«`
En este ejemplo, utilizamos el método AddWithValue de la propiedad Parameters para agregar un parámetro al comando SQL. El primer parámetro del método es el nombre del parámetro, precedido por el símbolo @, y el segundo parámetro es el valor del parámetro.
Ejecución de un ADO.NET Command
Una vez que hemos creado y configurado un objeto SqlCommand, podemos ejecutarlo utilizando el método ExecuteNonQuery. Este método se utiliza para ejecutar comandos que no devuelven resultados, como las inserciones, actualizaciones y eliminaciones.
Aquí hay un ejemplo de cómo ejecutar un objeto SqlCommand:
«`csharp
SqlCommand command = new SqlCommand();
command.Connection = new SqlConnection(«cadena de conexión»);
command.CommandText = «INSERT INTO tabla (columna1, columna2) VALUES (@valor1, @valor2)»;
command.Parameters.AddWithValue(«@valor1», valor1);
command.Parameters.AddWithValue(«@valor2», valor2);
command.ExecuteNonQuery();
«`
En este ejemplo, creamos un objeto SqlCommand, configuramos el comando SQL y los parámetros, y luego ejecutamos el comando utilizando el método ExecuteNonQuery.
Obtención de resultados de un ADO.NET Command
En algunos casos, necesitamos obtener los resultados de un comando SQL, como una consulta SELECT. Para esto, utilizamos el método ExecuteReader de la clase SqlCommand.
Aquí hay un ejemplo de cómo obtener los resultados de un objeto SqlCommand:
«`csharp
SqlCommand command = new SqlCommand();
command.Connection = new SqlConnection(«cadena de conexión»);
command.CommandText = «SELECT * FROM tabla»;
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
// Acceder a los datos del resultado
}
reader.Close();
«`
En este ejemplo, creamos un objeto SqlCommand, configuramos el comando SQL y luego ejecutamos el comando utilizando el método ExecuteReader. Esto devuelve un objeto SqlDataReader, que podemos utilizar para leer los resultados de la consulta.
Dentro del bucle while, utilizamos el método Read del objeto SqlDataReader para avanzar a la siguiente fila de resultados. Luego, podemos acceder a los datos de cada columna utilizando los métodos GetXxx, donde Xxx es el tipo de datos de la columna.
Finalmente, cerramos el objeto SqlDataReader utilizando el método Close.
Uso de transacciones con ADO.NET Command
ADO.NET Command también es compatible con transacciones, que nos permiten agrupar varias operaciones en una única transacción y asegurarnos de que todas se completen correctamente o se deshagan en caso de error.
Para utilizar transacciones con ADO.NET Command, debemos utilizar la clase SqlTransaction. Aquí hay un ejemplo de cómo utilizar transacciones:
«`csharp
SqlConnection connection = new SqlConnection(«cadena de conexión»);
connection.Open();
SqlTransaction transaction = connection.BeginTransaction();
try
{
SqlCommand command1 = new SqlCommand();
command1.Connection = connection;
command1.Transaction = transaction;
command1.CommandText = «comando SQL 1»;
command1.ExecuteNonQuery();
SqlCommand command2 = new SqlCommand();
command2.Connection = connection;
command2.Transaction = transaction;
command2.CommandText = «comando SQL 2»;
command2.ExecuteNonQuery();
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
// Manejar el error
}
finally
{
connection.Close();
}
«`
En este ejemplo, creamos una conexión a la base de datos y luego comenzamos una transacción utilizando el método BeginTransaction de la conexión. Luego, creamos y ejecutamos los comandos SQL dentro de la transacción, asignando la propiedad Transaction de cada objeto SqlCommand.
Si todas las operaciones se completan correctamente, llamamos al método Commit de la transacción para confirmar los cambios en la base de datos. Si ocurre un error, llamamos al método Rollback para deshacer los cambios y luego manejamos el error.
Finalmente, cerramos la conexión a la base de datos utilizando el método Close.
Conclusiones
ADO.NET Command es una clase fundamental en ADO.NET que nos permite ejecutar comandos SQL en una base de datos. Con ADO.NET Command, podemos crear, configurar y ejecutar comandos SQL, así como obtener los resultados de las consultas y utilizar transacciones para agrupar varias operaciones en una única transacción.
Es importante tener en cuenta que ADO.NET Command es solo una parte de ADO.NET y que existen otras clases y componentes que se utilizan en conjunto para interactuar con bases de datos. Sin embargo, ADO.NET Command es una herramienta poderosa y versátil que nos permite realizar operaciones CRUD en una base de datos de manera eficiente y segura.