La clase de acceso a datos requiere en la aplicación que la utilice ya sea en el web.config o en el app.config, la siguiente entrada:
<connectionStrings>
<add name="SqlConnectionString"
connectionString="Server=localhost;Database=Northwind;Uid=sa;Pwd=as;
Trusted_Connection=false;" providerName="System.Data.SqlClient"/>
</connectionStrings>
Métodos privados:
Método Connection
public static void Connection(string ConnectionString)
Este método opcionalmente puede recibir la cadena de conexión, en la llamada la cadena de conexión podría dejarse en blanco y se cogería por defecto el valor del web.config:
<connectionStrings>
<add name="SqlConnectionString"
connectionString="Server=localhost;Database=Northwind;Uid=sa;Pwd=as;
Trusted_Connection=false;" providerName="System.Data.SqlClient"/>
</connectionStrings>
public static void Close()
Cierra la conexión anteriormente abierta. Método ExecuteDataSet
public static DataSet ExecuteDataset(CommandType commandType, string commandText)
public static DataSet ExecuteDataset(CommandType commandType, string commandText, params SqlParameter[] commandParameters) {
Si se han ejecutado multiples querys las devolverá en tantas tablas como querys se hayan ejecutado, ver ejemplo.
La primera llamada al método es para el caso que el stored procedure no tenga parámetros o se ejecute una sentencia SQL.
En el segundo caso cargamos los parámetros en un SqlParameter.
Método ExecuteScalar
public static object ExecuteScalar(CommandType commandType, string commandText)
public static object ExecuteScalar(CommandType commandType, string commandText, params SqlParameter[] commandParameters)
Método ExecuteNonQuery:
public static int ExecuteNonQuery(CommandType commandType, string commandText)
public static int ExecuteNonQuery(CommandType commandType, string commandText, params SqlParameter[] commandParameters) {
Como podéis comprobar los tres métodos públicos de acceso a datos (ExecuteDataSet, ExecuteScalar y ExecuteNonQuery ) son similares y tiene los mismo parámetros para facilitar su uso.
Ahora vamos a ver un ejemplo de utilización de estos métodos para ver su sintaxis y lo fáciles que son de utilizar.
Junto a la librería de acceso a datos (MSSQL) dejo también una aplicación web donde hay unos selects, inserts, updates y deletes de ejemplo. Estos ejemplos utilizan la base de datos Northwind que podéis bajaros de aquí. También encontrareis un fichero llamado storeds.sql donde están las stored procedures que he creado para el ejemplo, solo tenéis que ejecutar el script en la base de datos Northwind y se crearan los stored procedures.
Los ejemplos de estos tres métodos son muy similares, antes de utilizar la librería tenemos que añadirla a las referencias y hacer un using de la dll:
using netveloper.DataManager;
ExecuteDataSet ejecutando una sentencia SQLPrimero creamos la conexión, como en el web.config he creado la conexión no es necesario que aquí la especifique.
MSSQL.Connection("");
Llamamos al método ExecuteDataser y le pasamos el tipo de comando, en este caso una sentencia SQL, y la sentencia SQL.DataSet DS = MSSQL.ExecuteDataset(CommandType.Text, "SELECT DISTINCT Country, Country as pais FROM Customers ORDER BY Country");
Cerramos la conexiónMSSQL.Close();
ExecuteDataSet ejecutando un stored procedure sin parámetros Abrimos la conexiónMSSQL.Connection("");
Llamamos al método ExecuteDataset y le pasamos el tipo de comando, en este caso un stored procedure y el nombre del stored procedure.DataSet DS = MSSQL.ExecuteDataset(CommandType.StoredProcedure, "listar_customers");
Cerramos conexión.MSSQL.Close();
ExecuteDataSet ejecutando un stored procedure con parámetros Los parámetros los pasaremos con un array de parámetros SqlParameter. Definimos el array de parámetros, en este caso 1 parametroSqlParameter[] param = new SqlParameter[1];
Definimos el parámetro, el nombre (igual que en el stored procedure), el tipo y el valor.param[0] = new SqlParameter("pais", SqlDbType.VarChar); param[0].Value = dpCiudad.SelectedItem.ToString();
Abrimos la conexionMSSQL.Connection("");
Ejecutamos la consulta pasándole el array de parametros.DataSet DS = MSSQL.ExecuteDataset(CommandType.StoredProcedure, "listar_customers_parametros", param);
Cerramos la conexionMSSQL.Close();
ExecuteScalar Para este método sólo he preparado un ejemplo ejecutando una stored procedure con parametros.En este ejemplo tambien veremos cómo pasar el string de conexión en lugar de utilizar el del web.config.
Definimos el string de conexión a la base de datos.
string Conexion = "Server=localhost;Database=Northwind;Uid=sa;Pwd=as;";
Definimos el array de parámetros y el parámetro que le pasamos al stored procedure.SqlParameter[] param = new SqlParameter[1]; param[0] = new SqlParameter("codigo2", SqlDbType.VarChar); param[0].Value = dpcodigo2s.SelectedItem.ToString();
Abrimos la conexión pasándole el string de conexión creado anteriormente.MSSQL.Connection(Conexion);
Ejecutamos el stored procedure y nos devolvera un valor que tenemos que convertir a string.Label1.Text = MSSQL.ExecuteScalar(CommandType.StoredProcedure, "listar_CompanyName", param).ToString();
Cerramos la conexión.MSSQL.Close();
ExecuteNonQuery Igual que en el ejemplo anterior solo he preparado un ejemplo con stored procedure y parametros. Sobran las explicaciones porque como podéis ver es igual que los anteriores.
SqlParameter[] param = new SqlParameter[1];
param[0] = new SqlParameter("codigo2", SqlDbType.VarChar);
param[0].Value = dpcodigo2s.SelectedItem.ToString();
MSSQL.Connection("");
MSSQL.ExecuteNonQuery(CommandType.StoredProcedure, "delete_CompanyName", param);
MSSQL.Close();
Enlaces relacionadas:
Ejemplo para utilizar la librería DataManager
Librería de acceso a datos DataManager
Clase conexión a SQL Server MSSQL.cs (renombrar a .cs)
Y esto es todo, feliz programming!!
Saludos
Alex.