Una biblioteca es una colección o conjunto de subprogramas usados para desarrollar software. En general, las bibliotecas no son ejecutables, pero sí pueden ser usadas por ejecutables que las necesitan para poder funcionar correctamente.
Desarrollo de la librería:
La siguiente librería propuesta consta de dos clases y un archivo XML, los cuales nos van a permitir de una manera mucho más práctica y fácil, la conexión y mantenimiento de una base de datos principalmente el motor de Microsoft SQL Server 2014.
Primero cabe mencionar que para manipular el String de conexión, dado que es una librería (Archivo DLL), lo haremos por medio del XML ya mencionado. Este archivo contiene los siguientes elementos:
Luego necesitaremos una clase que le llamaremos Parametros, para poder leer el archivo XML y crear el String de conexión.
public class Parametros
{
#region Atributos
private string servidor;
private string baseDatos;
private string usuario;
private string clave;
private bool seguridadIntegrada;
private string archivoParametros;
private string cadenaConexion;
private string error;
private XmlDocument xml = new XmlDocument();
private XmlNode nodo;
#endregion
#region Constructor
public Parametros()
{
servidor = "";
baseDatos = "";
usuario = "";
clave = "";
seguridadIntegrada = true;
archivoParametros = "";
cadenaConexion = "";
error = "";
}
#endregion
#region Propiedades
public string CadenaConexion
{
get { return cadenaConexion; }
}
public string Error {
get { return error; }
}
#endregion
#region Métodos Públicos
public bool GenerarCadenaConexion(string nomArchivoParametros)
{
archivoParametros = Application.StartupPath + "\\" + nomArchivoParametros;
try
{
xml.Load(archivoParametros);
nodo = xml.SelectSingleNode("//Servidor");
servidor = nodo.InnerText;
nodo = xml.SelectSingleNode("//BaseDatos");
baseDatos = nodo.InnerText;
nodo = xml.SelectSingleNode("//Usuario");
usuario = nodo.InnerText;
nodo = xml.SelectSingleNode("//Clave");
clave = nodo.InnerText;
nodo = xml.SelectSingleNode("//SeguridadIntegrada");
seguridadIntegrada = Convert.ToBoolean(nodo.InnerText);
if (seguridadIntegrada)//autenticación windows
{
cadenaConexion = "Data Source=" + servidor
+ ";Initial Catalog=" + baseDatos
+ ";Integrated Security=True";
}
else
{
cadenaConexion = "Data Source=" + servidor
+ ";Initial Catalog=" + baseDatos
+ "; User id=" + usuario
+ ";Password=" + clave
+ ";Integrated Security=False";
}
xml = null;
return true;
}
catch (Exception ex)
{
error = ex.Message;
xml = null;
return false;
}
}
#endregion
}
Seguidamente crearemos otra clase con el nombre ConexionBD, la cual a partir del String de conexión anteriormente creado, podamos crear la conexión y los respectivos métodos en los que vamos a interactuar con la base de datos.
public class ConexionBD
{
#region Atributos
private string archivoParametros;
private string cadenaConexion;
private string error;
private bool hayConexion;
private SqlConnection con;
private SqlCommand cmd;
private SqlDataReader dr;
#endregion
#region Propiedades
public SqlDataReader Dr
{
get { return dr;}
}
public SqlConnection Con
{
get{return con;}
}
public string Error
{
get{return error;}
}
#endregion
#region Constructor
public ConexionBD(string archParametros)
{
this.archivoParametros = archParametros;
hayConexion = false;
con = new SqlConnection();
cmd = new SqlCommand();
CerrarConexion();
}
#endregion
#region Métodos Privados
private bool G_CadenaConexion()
{
try
{
Parametros parametros = new Parametros();
if (!parametros.GenerarCadenaConexion(archivoParametros))
{
error = parametros.Error;
parametros = null;
return false;
}
cadenaConexion = parametros.CadenaConexion;
parametros = null;
return true;
}
catch (Exception ex)
{
error = ex.Message;
return false;
}
}
#endregion
#region Métodos públicos
//método conectar ala bd
public bool AbrirConexion()
{
if (!G_CadenaConexion()) return false;
con.ConnectionString = cadenaConexion;
try
{
con.Open();
hayConexion = true;
return true;
}
catch (Exception exception)
{
error = exception.Message;
hayConexion = false;
return false;
}
}
//cerrar conexion
public void CerrarConexion()
{
try
{
con.Close();
hayConexion = false;
}
catch (Exception exception)
{
error = "No se cerró la conexion correctamente..!"+exception.Message;
}
}
//método llenar DataTable
public DataTable GetDatosTabla(string nomprocedimiento,
string[] nomparametros, params Object[] valParametros)
{
DataTable dt = new DataTable();
cmd.Connection = con;
cmd.CommandText = nomprocedimiento;
cmd.CommandType = CommandType.StoredProcedure;
if (nomprocedimiento.Length!=0 &&
nomparametros.Length==valParametros.Length)
{
int i = 0;
foreach (string parametro in nomparametros)
cmd.Parameters.AddWithValue(parametro,valParametros[i++]);
try
{
dr = cmd.ExecuteReader();
dt.Load(dr);
return dt;
}
catch (Exception ex)
{
error = ex.Message;
}
}
return dt;
}
//método ejecutar procedure (transacción)
public int Ejecutar(string nomprocedimiento,
string[] nomparametros, params Object[] valParametros)
{
DataTable dt = new DataTable();
cmd.Connection = con;
cmd.CommandText = nomprocedimiento;
cmd.CommandType = CommandType.StoredProcedure;
if (nomprocedimiento.Length != 0 &&
nomparametros.Length == valParametros.Length)
{
int i = 0;
foreach (string parametro in nomparametros)
cmd.Parameters.AddWithValue(parametro, valParametros[i++]);
try
{
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
error = ex.Message;
}
}
return 0;
}
#endregion
}
Demostración de la librería:
La complementación y uso de la misma, se los mostraré en una serie de vídeos muy explicativos, para que puedan divisar el potencial de esta hermosa librería, la cual nos va ayudar con una rápida y sólida creación de nuestros proyectos, tanto web como de escritorio.
0 comentarios: