Clase
IX
Objeto SQLConnection y SQLDataReader
Objetivo
Aquí veremos como consumir datos desde una fuente de datos (en éste caso
utilizaremos la base de datos de Northwind de SQL)
Duración Aproximada
20 minutos
Pasos o Recomendaciones
1) Primeramente veremos como crear una conexión con SQLServer utilizando el
objeto SQLConnection ubicado en el namespace System.Data.SqlClient
2) Vamos a crear un nuevo proyecto llamado Ejercicio4 del tipo aplicación
de consola
3) Primeramente vamos a importar los namespaces System.Data y
System.Data.SqlClient
4) Luego dentro del método main declararemos un objeto llamado dtEmpresas
del tipo DataTable y le agregaremos dos DataColumn llamados CustomerID y
CompanyName
Static void
{
//Creo un objeto DataTable llamado Empresas
DataTable dtEmpresas = new
DataTable(“Empresas”);
//Al objeto DataTable le agrego dos datacolumns del tipo
string
dtEmpresas.Columns.Add(“CustomerID”, typeof(string));
dtEmpresas.Columns.Add(“CompanyName”, typeof(string));
5) Declaramos un objeto sqlconnection llamado myconn y le indicaremos el
connectionstring que utilizará (ántes de realizar la operación, se debe
verificar que el connection string sea el correcto en el ámbito donde se va a
ejecutar)
//Creamos
un objeto SQLConnection
SqlConnection myconn = new SqlCOnnection();
//Indicamos
el Cnnectin String que utilizará
Myconn.ConnectionString
= “Data Source=LOCALHOST;Initial
CaTalog=Northwind;User ID=sa,Pwd=123”;
6) Creamos un objeto SQLCommand y le indicamos la cadena TSQL que utilizará
y el objeto sqlconnection que utilizará
//Creo
un objeto SQLCommand
SqlCommand mycomando = new SqlCommand();
//Le indico la cadena TSQL que utilizará
Mycomando.CommandText
= “SELECT CustomerID, CompanyName FROM Customers”;
//Indico el objeto connection que
utilizará
Mycomando.Connection = myconn;
7) Creamos ahora un objeto SQLDataReader y le indicamos el Select Command
Text y el objeto slqconnection que utilizará
//Creamos un adaptador del tipo
SqlAdapter y le indicamos el command text
//que utilizará la consulta y el objeto
connection que utiliza
SqlDataAdapter myadap = new SqlDataAdapter
(“SELECT CustomerID, CompanyName FROM Customers”,
myconn)
8) Ahora abrimos la coneccion con la base de datos. Creamos un objeto
DataReader llamado mydr e invocamos el método ExecuteReader del objeto
mycomando que anteriormente hemos creado.
9)
Luego cargamos el objeto
dtEmpresas, utilizando el método Load y pasandole en el argumento el objeto
Datareader. Por
último cerramos la coneccion
//Abro la conexión
myconn.Open();
//Creo un objeto DataReader y ejecuto el
método ExecuteReader del objeto mycomando
SqlDataReader mydr = mycomando.ExecuteReader();
//Cargo los datos en el datatable
utilizando el objeto DataReader
dtEmpresas.Load(mydr);
myconn.close;
10)Por último vamos a recorrer los registros obtenidos y representarlos en
la consola
//Recorro la lista de empresas obtenidas
y lo muestro en consola
Console.WriteLine(“Listado de Empresas:
”);
foreach (DataRow rowEmpresa in
dtEmpresas.Rows)
{
string idempresa =
rowEmpresa[“CustomerID”].ToString();
string nombreempresa =
rowEmpresa[“CompanyName”].ToString();
Console.WriteLine (idempresa + “ – “ +
nombreempresa);
}
Console.ReadLine();
11)El resultado final será el siguiente:
Hasta aquí, hemos aprendido a llenar un datatable por
medio de su método Load y indicandole un objeto DataReader.
Objeto
SQLConnection y SQLDataAdapter (.Fill)
Objetivo
Obtener conocimientos básicos en el manejo de los objetos connection y
el objeto dataadapter
Duración Aproximada
15 minutos
Pasos o Recomendaciones
1) Basado en el ejercicio anterior (de la clase pasada) ,
ahora veremos de realizar la mísma operación pero utilizando el objeto
DataAdapter en ves del objeto DatarReader.
2) Lo que vamos a hacer primeramente es eliminar el código que se muestra
encuadrado a continuación
//Creamos
un objeto SQLConnection
SqlConnection myconn = new SqlConnection();
//Indicamos el Cnnectin String que
utilizará
Myconn.ConnectionString
= “Data Source=BEYOND07;Initial
CaTalog=Northwind;User ID=sa,Pwd=123”;
//Creo un
objeto SQLCommand
SqlCommand mycomando = new SqlCommand();
//Le
indico la cadena TSQL que utilizará
Mycomando.CommandText = “SELECT
CustomerID, CompanyName FROM Customers”;
//Indico
el objeto connection que utilizará
Mycomando.Connection
= myconn;
//Abro
la conexión
myconn.Open();
//Creo
un objeto DataReader y ejecuto el método ExecuteReader del objeto mycomando
SqlDataReader mydr = mycomando.ExecuteReader();
//Cargo
los datos en el datatable utilizando el objeto DataReader
dtEmpresas.Load(mydr);
myconn.close;
//Recorro la lista de empresas obtenidas y lo muestro en consola
Console.WriteLine(“Listado de Empresas: ”);
3) En el lugar que previamente borramos creamos un objeto SQLDataAdapter y le
indicamos el Select Command Text y el objeto slqconnection que utilizará
//Creamos un adaptador del tipo
SqlAdapter y le indicamos el command text
//que utilizará la consulta y el objeto
connection que utiliza
SqlDataAdapter myadap = new SqlDataAdapter
(“SELECT CustomerID, CompanyName FROM Customers”,
myconn)
4) Ahora abrimos la coneccion con la base de datos y rellenamos el
contenido obtenido en el objeto DataTable llamado dtEmpresas. Por último cerramos la coneccion
//Abro la conexión
myconn.Open();
//Cargo el contenido del resultset
obtenido de
myadap.Fill(dtEmpresas);
//Cierro la conexión
myconn.close;
Por
último ejecutamos la aplicación presionando F5 y vermos los mismos resultados
que ántes
1) Hasta aquí, hemos aprendido a llenar utilzando el método fill del objeto
dataadapter para llenar el contenido en un datatable
Objeto
SQLConnection y SQLDataAdapter (.Update)
Objetivo
Obtener conocimientos básicos en el manejo de los objetos connection y
el objeto dataadapter utilizando el método Update()
Duración Aproximada
20 minutos
Pasos o Recomendaciones
1) Basado en el ejercicio anterior, ahora veremos de realizar la mísma
operación pero vamos a realizar cambios en nuestro datatable y luego volcarlos
a la base de datos. De ésta manera pondremos en práctica el modelo de acceso a
datos desconectados.
2) Utilizando el mísmo ejercicio anterior vamos a ubicarnos al final del
código y vamos a agregar el siguiente código.
//Primero indico el customerID que deseo
modificar
Console.Write (“Escriba el CustomerID
que desea modificar: ”);
string custid = Console.ReadLine();
3) Ahora recorremos la colección de datarows en busca del customerid
//Luego me traigo una colección de
datarows que contengan este customerid
DataRow[] rwempresas =
dtEmpresas.Select(“CustomerID = ‘” + custid + “’” )
if (rwempresas.Length ¡= 1) //Si no encuentro nada entonces salgo
{
Console.WriteLine(“CustomerID no encontrado”);
Console.ReadLine();
return;
}
4) Si no llegaramos a encontrar el customerid entonces enviamos un mensaje
y finalizamos la ejecucion del programa
5) Si encontramos el customerid, entonces me traigo el DataRow
correspondiente que tiene dicho customerid y muestro en consola el nombre
original y solicito un nuevo nombre para dicha empresa:
//Me traigo el primer datarw de la
colección
DataRow rwMiEmpresa = rwempresas[0];
string nombreactual =
rowMiEmpresa[“CompanyName”].ToString();
//Muestro en consola el nombre del
customerid seleccionado
Console.WriteLine(“Nombre actual de
la empresa: ” + nombreactual);
//Solicito que escriba un nuevo nombre
Console.Write (“Escriba el
nuevo nombre: “);
string nuevonombre = Console.ReadLine();
6) Ahora que eh obtenido el nuevo nombre, modifico el datarow, pero
primeramente hay que llamar al método .BeginEdit del propio datarow para luego
poder asignarles valores y por último se debe llamar el método EndEdit() como
se muestra en la siguiente figura:
//Llamo al método BeginEdit del datarow
para iniciar los cambios
rowiEmpresa.BeginEdit();
//Modifico el valor del campo CompanyName
rowMiEmpresa[“CompanyName”]
= nuevonombre;
//Finalizo la edicion llamando al métdo EndEdit()
rowMiEmpresa.EndEdit();
7) Creamos un objeto command que será utilizado por el dataadapter para
poder realizar los cambios necesarios en la base de datos. El objeto command
que crearemos se llamará updcomando y le debemos indicar la cadena TSQL que
utilizará para llamar a
//Ahora creo un objeto Cmmand que
utilizare para guardar los cambios en
SqlCommand updCmmand = new SqlCommand();
//Le
indico la cnexion
Updcommand.Connection = myconn;
//Le indico la cadena TSQL
Updcommand.CommandText
= “UPDATE Customers SET CompanyName = @CompanyName
WHERE CustomerID = @CustomerID”;
//Indico los paráms que estoy usando, el
tipo y longitud del dato y el nombre del campo del datatable
Updcommand.Parameters.Add(“@CompanyName”, SqlDbType.nVarChar, 50,
“CompanyName”)
Updcommand.Parameters.Add(“@CustomerID”, SqlDbType.nVarChar, 5, “CustomerID”)
8) Por último adjuntamos éste objeto a nuestro DataAdapter (myada) para
luego invocar su método .Update() e indicarle el
datatable que tiene que actualizar contra la base de datos.
//Ahora adjunto el objeto updcommand al
dataadapter
myadap.UpdateCommand = updcommand;
//Por ultimo
llamo al método .Update del DataAdapter
myadap.Update(dtEmpresas);
9) Hasta aquí hemos aprendido a consultar en la base de datos, traer los
resultados y guardarlos en un objeto en memoria (datatable), modificar su
contenido y volver a conectarnos a la base de datos para guardar los cambios.
10)De ésta manera se ve reflejado la importancia y trabajar en forma
desconectada.
DataBinding
Duración Aproximada
35 minutos
Pasos o Recomendaciones
1) En éste ejercicio mostraremos básicamente como enlazar datos de un
origen de datos con un control de WinForms,
2) Para ello crearemos un proyecto del tipo “Windows Application” con el
nombre de “Ejercicio7”
3) Primermente arrastraremos desde nuestro ToolBox en la sección “Data”,
arrastraremos y colocaremos el control DataGridView sobre nuestro formulario “Form1”,
una vez colocado resaltará un cuadro de tareas correspondiente al DataGridView
de donde seleccionaremos de “Choose Data Source” la opcion “Add Project Data
Source…”
4) Una ves que seleccionamos “Add Project Data Source..” aparecerá un
cuadro con templates, de donde seleccionaremos “DataBase”
5) Seleccionamos DataBase, luego “Next”, luego presionamos el boton “New
Connection...”. luego veremos un cuandro de dialogo para seleccionar el origen
y la base de datos. (dependiendo del ambito donde se desarrolle el curso,
se deberia verificar primeramente el nombre y la instancia de sql donde resida
una base de datos Northwind).
6) Una vez que hallamos presionado “Ok”, VisualStudio nos notificará que es
dentro de la cadena de coneccion hay datos importantes (nombre de usuario,
contraseña), Presionamos “Yes” sobre el cuado de dialogo”
7) Ahora VisualStudio nos brinda la posibilidad de guardar el conecction
string dentro de un archivo externo de configuración, ya que si en el día de mañana
cambia la ubicación del servidor, o las claves, etc, habria que entrar al
código de la aplicación para modificar y volver a recompliar el programa. De
ésta manera queda guardado en un archivo externo a la aplicación.
8)
Por último seleccionaremos de
Tablas, la tabla Customers, y de ahí seleccionaremos únicamente los campos
CustomerID y CompanyName. Por último presionamos “Finish”.
9) Luego de finalizado el asistente veremos que el control DataGridView
esta enlazado con un control llamado “customerBindingSource”, que a su ves éste
control esta enlazado con un northwindDataSet (un dataset tipado que ha creado)
y un customerDataTable que utilizara para realizar las consultas y/o
modificaciones sobre la base de datos.
10)Si presionamos F5 veremos que automaticamente se rellena el contenido en
el control DataGridView
11)Fin