Ejecutar una consulta y devolver un sólo valor:
Como bien es sabido, para ejecutar una consulta y devolver un sólo valor a través de un SqlCommand, debemos ejecutar un el método ExecuteNonQuery().
Es fácil realizar una ejecución de este método de forma controlada a través de la biblioteca SqlHelper, ya que contiene métodos que nos facilitarán dicha tarea. Esto nos permitirá devolver un valor con tan sólo 2 líneas de código:
private void StartScalarDemo() { var query = "SELECT CompanyName FROM Customers WHERE CustomerID = 'BLAUS'"; var result = SqlHelper.ExecuteScalar(GlobalData.ConnectionString, CommandType.Text, query); Debug.WriteLine(result); }
En primer lugar, hemos de definir la sentencia a ejecutar, mientras que en la siguiente ejecutaremos el método denominado ExecuteNonQuery que se encargará de llevar a cabo todo el proceso correspondiente al manejo de apertura y cierre de la base de datos, así como la gestión de errores.
Ejecutar una consulta del tipo NonQuery:
Si lo que deseamos es llevar a cabo la ejecución de una consulta que no devuelva información de la base de datos (tal como un insert o un delete), la lógica será similar al ejemplo anterior, con la diferencia de que el método que hemos de ejecutar es ExecuteNonQuery, que nos devolverá el número de filas afectadas, y el cual ejecutaremos de la siguiente forma en el caso de querer insertar información:
private void StartNonQueryDemo1() { String query = ""; query = query + "INSERT INTO [dbo].[Customers] " + "\n"; query = query + " ([CustomerID] " + "\n"; query = query + " ,[CompanyName] " + "\n"; query = query + " ,[ContactName] " + "\n"; query = query + " ,[ContactTitle] " + "\n"; query = query + " ,[Address] " + "\n"; query = query + " ,[City] " + "\n"; query = query + " ,[Region] " + "\n"; query = query + " ,[PostalCode] " + "\n"; query = query + " ,[Country] " + "\n"; query = query + " ,[Phone] " + "\n"; query = query + " ,[Fax]) " + "\n"; query = query + " VALUES " + "\n"; query = query + " ('XYZ' " + "\n"; query = query + " ,'HECTORS COMPANY' " + "\n"; query = query + " ,'HÉCTOR PÉREZ' " + "\n"; query = query + " ,'M.C.C' " + "\n"; query = query + " ,'AV. HOGWARTS' " + "\n"; query = query + " ,'MAGICLAND' " + "\n"; query = query + " ,'REGIONLAND' " + "\n"; query = query + " ,'99999' " + "\n"; query = query + " ,'UK' " + "\n"; query = query + " ,'2222' " + "\n"; query = query + " ,'2222')"; var result = SqlHelper.ExecuteNonQuery(GlobalData.ConnectionString, CommandType.Text, query); Debug.WriteLine("Registros agregados: {0}", result); }
En caso de desear eliminar el registro insertado en el ejemplo anterior, o bien, algún otro, debemos hacer una ejecución como en el siguiente ejemplo:
private void StartNonQueryDemo2() { String query = "DELETE FROM [Customers] WHERE [CustomerID] = 'XYZ'"; var result = SqlHelper.ExecuteNonQuery(GlobalData.ConnectionString, CommandType.Text, query); Debug.WriteLine("Filas eliminadas: {0}", result); }
Hemos visto que la utilización de la biblioteca SqlHelper es de mucha ayuda a la hora de programar, lo único que falta es que la integres a tus proyectos si te ha gustado. De nuevo, dejo el link de github si deseas integrar una biblioteca de clases de utilidades que se irán agregando poco a poco.
Saludos.