Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
1. PROCEDIMIENTO
1.1 Consultar
1. ¿Qué es ADO.NET?
2. ¿Cuál es la arquitectura de ADO.NET?
3. ¿Cuál es el proceso para abrir y cerrar una conexión a una Base de datos SQL server desde C#?
4. ¿Cuáles son los objetos básicos para manipular la información en una base de datos de ADO.NET?
5. ¿Cuáles son las librerías de .NET e instrucciones de C# necesarias para realizar una conexión a
bases de datos SQL Server?
6. ¿Cómo documentar Propiedades y Métodos en una clase en un proyecto .NET?
7. ¿Cuál es la función de los objetos: SqlDataReader, SqlDataAdapter SqlDataSet y DataTable en la
tecnología ADO.NET?
8. En la tecnología .NET. Cuáles son las propiedades y los métodos necesarios para utilizar un:
SqlConnection, SqlCommand, sqlDataReader y DataSet.
9. ¿Cuales son los tres tipos de ejecución de un SqlCommand y cual es la función de cada uno?
10. En C#, ¿cómo llenar un DataTable de un SqlDataSet?
11. ¿Cuáles son las similitudes y las diferencias entre un SqlDataReader y un SqlDataSet?
12. En la tecnología .NET, ¿cómo se llena un: sqlDataReader y DataSet.?
13. ¿Cuáles son las propiedades necesarias para llenar un DataGridView en una GUI Windows Forms?
14. ¿Cuáles son las propiedades necesarias para llenar un GridView en una GUI Web Forms?
15. ¿Cuáles son las propiedades necesarias para llenar un ComboBox en una GUI Windows Forms?
16. ¿Cuáles son las propiedades necesarias para llenar un DropDownList en una GUI Web Forms?
17. ¿Cuáles son las propiedades necesarias para llenar un RadioButtonList en una GUI Web Forms?
18. ¿Cómo crear un usuario en Microsoft SQL Server e instanciarlo a una Base de datos determinada?
Actividad 1. Conocer la clase para instanciar un servidor de base de datos y manipular en él, una
Base de Datos tipo SQL 2005/2008 utilizando un archivo XML
a. La clase fue realizada en Visual Studio, utilizando el lenguaje C#, en un proyecto tipo: Biblioteca de
clases, con nombre: libConexionBD.
b. Referencia y usa la librería: libParametros y de .NET: System.Data y System.Data.SqlClient.
c. La librería tiene la clase: clsConexionBD con la siguiente representación UML:
Página 1 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
clsConexionBD
Constructor
clsConexionBD( string NombreAplicacion )
- strNombreApp : string
- strCadenaCnx : string
- objVrUnico : object
- strSQL : string
- strError : string
- blnHayCnx : bool
- objCnxBD : SqlConnection
- objCmd : SqlCommand
- objReader : SqlDataReader
- objAdapter : SqlDataAdapter
- dsDatos : DataSet
- objSqlParam : SqlParameter[]
+ SQL : string ↓
+ ValorUnico : object ↑
+ DataReaderLleno : SqlDataReader ↑
+ DataSetLleno : DataSet ↑
+ Error : string ↑
+ ParametrosSQL : SqlParameter[] ↓
- validar(string metodoOrigen): (bool)
- generarCadenaCnx() : bool
- abrirCnx() : bool
- agregarParametros(SqlParameter[] objSqlParametros): (bool)
+ cerrarCnx() : (bool)
+ consultar(bool blnConParametros, bool blnProcAlmacenado) : bool
+ consultarValorUnico(bool blnConParametros, bool blnProcAlmacenado) : bool
+ ejecutarSentencia(bool blnConParametros, bool blnProcAlmacenado) : bool
+ llenarDataSet(bool blnConParametros, bool blnProcAlmacenado) : bool
Página 2 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
Actividad 2. Conocer la clase que consulta una base de datos y llena: Grids (Windows y Web)
a. La clase fue realizada en Visual Studio, utilizando el lenguaje C#, en un proyecto tipo: Biblioteca de
clases, con nombre: libLlenarGrids.
b. Referencia y usa: libConexion y de .NET las librerias: System.Web y System.Windows.Form
c. Tiene la siguiente representación UML:
clsLlenarGrids
Constructor
clsLlenarGrids( string NombreAplicacion )
- strNombreApp : (string)
- strSQL : (string)
- strError : (string)
- blnEjecParametros : (bool)
- objParamSQL : (SqlParameter[])
- objCnx : (clsConexionBd)
+ SQL : (string) ↓
+ Error : (string) ↑
+ ParametrosSQL : (SqlParameter[]) ↓
- Validar() : (bool)
- consultarData() : (bool)
+ LlenarGridWindows (DataGridView dgvGenerico) : bool
+ LlenarGridWeb (GridView gvGenerico) : bool
Actividad 3. Conocer la clase que consulta una base de datos y llena: Combos (Windows y Web)
a. La clase fue realizada en Visual Studio, utilizando el lenguaje C#, en un proyecto tipo: Biblioteca de
clases, con nombre: libLlenarCombos.
b. Referencia y usa: libConexion y de .NET las librerias: System.Web y System.Windows.Form
c. Tiene la siguiente representación UML:
clsLlenarCombos
Constructor
clsLlenarCombos( string NombreAplicacion )
- strNombreApp : (string)
- strSQL : (string)
- strCampoID : (string)
- strCampoTexto : (string)
- strError : (string)
- blnEjecParametros : (bool)
- objParamSQL : (SqlParameter[])
- objCnx : (clsConexionBd)
+ SQL : (string) ↓
+ CampoTexto : (string) ↓
+ CampoID : (string) ↓
+ Error : (string) ↑
+ ParametrosSQL : (SqlParameter[]) ↓
- Validar() : (bool)
- consultarData() : (bool)
+ llenarComboWindows ( ComboBox cboGenerico ) : bool
+ llenarComboWeb ( DropDownList ddlGenerico ) : bool
Página 3 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
Actividad 4. Conocer la clase que consulta una base de datos y llena: RadioButtonList ( Web )
a. La clase fue realizada en Visual Studio, utilizando el lenguaje C#, en un proyecto tipo: Biblioteca de
clases, con nombre: libLlenarRBList.
b. Referencia y usa: libConexion y de .NET las librerias: System.Web
c. Tiene la siguiente representación UML:
clsLlenarRBList
Constructor
clsLlenarRBList( string NombreAplicacion )
- strNombreApp : (string)
- strSQL : (string)
- strCampoID : (string)
- strCampoTexto : (string)
- strError : (string)
- blnEjecParametros : (bool)
- objParamSQL : (SqlParameter[])
- objCnx : (clsConexionBd)
+ SQL : (string) ↓
+ CampoID : (string) ↓
+ CampoTexto : (string) ↓
+ Error : (string) ↑
+ ParametrosSQL : (SqlParameter[]) ↓
- Validar() : (bool)
- consultarData() :(bool)
+ LlenarRadioBLWeb (RadioButtonList rblGenerico): bool
Código
LibConexionBD
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using libLeerParametrosCnx;
namespace libConexionBd
{
public class clsConexionBd
{
#region "Atributos"
private string strNombreApp;
private string strCadenaCnx;
private object objVrUnico;
private string strSQL;
private string strError;
private bool blnHayCnx;
SqlConnection objCnxBD;
Página 4 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
SqlCommand objCmd;
SqlDataReader objReader;
SqlDataAdapter objAdapter;
DataSet dsDatos;
SqlParameter[] objSqlParam;
#endregion
#region "Constructor"
public clsConexionBd(string strNombreApp)
{
this.strNombreApp = strNombreApp;
this.strCadenaCnx = "";
this.objVrUnico = null;
this.strSQL = "";
this.strError = "";
this.objCnxBD = new SqlConnection();
this.objCmd = new SqlCommand();
this.objAdapter = new SqlDataAdapter();
this.dsDatos = new DataSet();
}
#endregion
#region "Propiedades"
public string SQL { set => strSQL = value; }
public object ValorUnico { get => objVrUnico;}
public SqlDataReader DataReaderLleno { get => objReader;}
public DataSet DataSetLleno { get => dsDatos;}
public string Error { get => strError;}
public SqlParameter[] ParametrosSQL {set => objSqlParam = value; }
#endregion
Página 5 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
return false;
}
}
return true;
}
private bool generarCadenaCnx()
{
try
{
if (!validar("GenerarCadenaCnx"))
{
return false;
}
clsParametros objParam = new clsParametros();
if (!objParam.generarCadenaCnx(strNombreApp))
{
strError = objParam.Error;
objParam = null;
return false;
}
strCadenaCnx = objParam.CadenaCnx;
objParam = null;
return true;
}
catch (Exception ex)
{
throw ex;
}
}
objCnxBD.ConnectionString = strCadenaCnx;
objCnxBD.Open();
blnHayCnx = true;
return true;
}
catch (Exception ex)
{
throw ex;
}
Página 6 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
throw ex;
}
}
#endregion
throw ex;
}
}
Página 7 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
}
objCmd.Connection = objCnxBD;
objCmd.CommandText = strSQL;
if (blnProcAlmacenado)
{
objCmd.CommandType = CommandType.StoredProcedure;
if (blnConParametros)
{
if (!agregarParam(objSqlParam))
{
return false;
}
}
}
else
{
objCmd.CommandType = CommandType.Text;
}
objReader = objCmd.ExecuteReader();
return true;
}
catch (Exception ex)
{
throw ex;
}
}
if (blnProcAlmacenado)
{
objCmd.CommandType = CommandType.StoredProcedure;
if (blnConParametros)
{
Página 8 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
if (!agregarParam(objSqlParam))
{
return false;
}
}
}
else
{
objCmd.CommandType = CommandType.Text;
}
objVrUnico = objCmd.ExecuteScalar();
return true;
}
catch (Exception ex)
{
throw ex;
}
}
if (blnProcAlmacenado)
{
objCmd.CommandType = CommandType.StoredProcedure;
if (blnConParametros)
{
if (!agregarParam(objSqlParam))
{
return false;
}
}
}
else
{
objCmd.CommandType = CommandType.Text;
}
Página 9 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
objCmd.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
throw ex;
}
}
if (blnProcAlmacenado)
{
objCmd.CommandType = CommandType.StoredProcedure;
if (blnConParametros)
{
if (!agregarParam(objSqlParam))
{
return false;
}
}
}
else
{
objCmd.CommandType = CommandType.Text;
}
objAdapter.SelectCommand = objCmd;
objAdapter.Fill(dsDatos);
return true;
}
catch (Exception ex)
{
throw ex;
}
}
Página 10 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
#endregion
}
}
Página 11 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
libLlenarGrids
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
using System.Windows.Forms;
using libConexionBd;
namespace libLlenarGrids
{
public class clsLlenarGrids
{
#region "atributos"
private string strNombreApp;
private string strSQL;
private string strError;
private bool blnEjecParametros;
private SqlParameter[] objParamSQL;
clsConexionBd objCnx;
#endregion
#region "constructor"
public clsLlenarGrids(String nombreAplicacion)
{
this.strNombreApp = nombreAplicacion;
strSQL = string.Empty;
strError = string.Empty;
objCnx = new clsConexionBd(strNombreApp);
}
#endregion
#region "propiedades"
public string SQL {set => strSQL = value; }
public string Error { get => strError;}
public SqlParameter[] ParametrosSQL {set => objParamSQL = value; }
#endregion
Página 12 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
objCnx.SQL = strSQL;
if (objParamSQL != null)
{
blnEjecParametros = true;
objCnx.ParametrosSQL = objParamSQL;
}
if (!objCnx.llenarDataSet(blnEjecParametros, true))
{
strError = objCnx.Error;
objCnx.cerrarCnx();
objCnx = null;
return false;
}
return true;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
dgvGenerico.DataSource = objCnx.DataSetLleno.Tables[0];
dgvGenerico.Refresh();
Página 13 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
objCnx.cerrarCnx();
objCnx = null;
return true;
}
catch (Exception ex)
{
throw ex;
}
}
gvGenerico.DataSource = objCnx.DataSetLleno.Tables[0];
gvGenerico.DataBind();
objCnx.cerrarCnx();
objCnx = null;
return true;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
}
Página 14 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
namespace libLlenarCombos
{
public class clsLlenarCombos
{
#region "atributos"
private string strNombreApp;
private string strSQL;
private string strCampoID;
private string strCampoTexto;
private string strError;
private bool blnEjecParametros;
private SqlParameter[] objParamSQL;
clsConexionBd objCnx;
#endregion
#region "constructor"
public clsLlenarCombos(String nombreAplicacion)
{
this.strNombreApp = nombreAplicacion;
strSQL = string.Empty;
strCampoID = string.Empty;
strCampoTexto = string.Empty;
strError = string.Empty;
objCnx = new clsConexionBd(strNombreApp);
}
#endregion
#region "propiedades"
public string SQL { set => strSQL = value; }
public string CampoID { set => strCampoID = value; }
public string CampoTexto {set => strCampoTexto = value; }
public string Error { get => strError; }
public SqlParameter[] ParametrosSQL { set => objParamSQL = value; }
#endregion
Página 15 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
objCnx.SQL = strSQL;
if (objParamSQL != null)
{
blnEjecParametros = true;
objCnx.ParametrosSQL = objParamSQL;
}
if (!objCnx.llenarDataSet(blnEjecParametros, true))
{
strError = objCnx.Error;
objCnx.cerrarCnx();
objCnx = null;
return false;
}
return true;
}
catch (Exception ex)
{
throw ex;
}
Página 16 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
}
#endregion
cboGenerico.DataSource = objCnx.DataSetLleno.Tables[0];
cboGenerico.ValueMember = strCampoID;
cboGenerico.DisplayMember = strCampoTexto;
cboGenerico.Items.Add("Seleccione");
cboGenerico.Refresh();
objCnx.cerrarCnx();
objCnx = null;
return true;
}
catch (Exception ex)
{
throw ex;
}
ddlGenerico.DataSource = objCnx.DataSetLleno.Tables[0];
ddlGenerico.DataValueField = strCampoID;
ddlGenerico.DataTextField = strCampoTexto;
ddlGenerico.Items.Add("Seleccione");
ddlGenerico.DataBind();
objCnx.cerrarCnx();
objCnx = null;
return true;
}
catch (Exception ex)
{
throw ex;
}
Página 17 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
}
#endregion
}
}
Página 18 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
Lib LlenarRBList
using libConexionBd;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
namespace libLlenarRBList
{
public class clsLlenarRBList
{
#region "atributos"
private string strNombreApp;
private string strSQL;
private string strCampoID;
private string strCampoTexto;
private string strError;
private bool blnEjecParametros;
private SqlParameter[] objParamSQL;
private clsConexionBd objCnx;
#endregion
#region "constructor"
public clsLlenarRBList(String nombreAplicacion)
{
this.strNombreApp = nombreAplicacion;
strSQL = string.Empty;
strCampoID = string.Empty;
strCampoTexto = string.Empty;
strError = string.Empty;
objCnx = new clsConexionBd(strNombreApp);
}
#endregion
#region "propiedades"
public string SQL { set => strSQL = value; }
public string CampoID { set => strCampoID = value; }
public string CampoTexto { set => strCampoTexto = value; }
public string Error { get => strError; }
public SqlParameter[] ParametrosSQL { set => objParamSQL = value; }
#endregion
Página 19 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
return false;
}
if (string.IsNullOrEmpty(strNombreApp))
{
strError = "Debe enviar el nombre de la aplicación";
return false;
}
if (string.IsNullOrEmpty(strCampoID))
{
strError = "Debe enviar el campo Id del Radio Buton List";
return false;
}
if (string.IsNullOrEmpty(strCampoTexto))
{
strError = "Debe enviar el campo texto del Radio Buton List";
return false;
}
return true;
}
objCnx.SQL = strSQL;
if (objParamSQL != null)
{
blnEjecParametros = true;
objCnx.ParametrosSQL = objParamSQL;
}
if (!objCnx.llenarDataSet(blnEjecParametros, true))
{
strError = objCnx.Error;
objCnx.cerrarCnx();
objCnx = null;
return false;
}
return true;
}
catch (Exception ex)
{
throw ex;
}
}
Página 20 de 21
Asignatura Lenguaje de programación
Orientada a Objeto II
Universidad Autónoma
Práctica 6
Latinoamericana
Programación C# Docente David Múnera Alvarez
Revisión Abril 2020
#endregion
rblGenerico.DataSource = objCnx.DataSetLleno.Tables[0];
rblGenerico.DataValueField = strCampoID;
rblGenerico.DataTextField = strCampoTexto;
rblGenerico.DataBind();
objCnx.cerrarCnx();
objCnx = null;
return true;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
}
Página 21 de 21