GRADO: SEXTO (6-1, 6-2, 6-3, 6-4, 6-5, 6-6) COMUNIDAD DE ...
PLSI2015A-6 ADONET
description
Transcript of PLSI2015A-6 ADONET
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 1/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -401-
CAPITULO 6 USANDO PROCEDIMIENTOS ALMACENADOS
Los procedimientos almacenados son instrucciones SQL que permiten realizar una tarearepetidamente. Puede crear un procedimiento de una vez y volver a utilizarlo cualquier número de veces en su programa.
6.1 PROCEDIMIENTOS ALMACENADOS CON LA BASE DE DATOS ALUMNOS
1 Crear un procedimiento almacenado que seleccione todos los registros de la tablaalumnos
Aparece lo siguiente
Modifique y Ponga pdate!ebe aparecer lo siguiente
"rabe el procedimiento y se modifica a
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 2/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -402-
#$ecutar con%
Puede ver el procedimiento almacenado y modificarlo si es necesario
&ambi'n modifica el procedimiento aS# (#%)!A&*S)ALM+*S.M!,-"*!#CLA# /return0value 1nt#2#C /return0value 3 (dbo-.(PA0Alumnos-S#L#C& 4eturn 5alue4 3 /return0value"*
2. Modifique el procedimiento almacenado anterior que solo 1iste el c6digo y el nombredel alumno
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 3/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -403-
AL&# P*C#!# PAlumnos AS select codalumno 7+ombrealumno from alumnos
#&+
Puede crear tambi'n un procedimiento con nueva consulta
Ejercicio 2 crear un procedimiento almacenado para obtener subtotales por curso
C#A&# P*C#!# PA0PagosCursos AS select codcurso7 count 8monto9 as cantidad 7sum8monto9 as total from pagos group by codcurso#&+ :
Al ejecutar e;ecute PA0PagosCursos
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 4/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -404-
Ejercicio 3% Crear un procedimiento almacenado con un par<metro de salida =! ALM+*S.Que liste los alumnos que contenga su c6digo en el par<metro
C#A&# P*C#!# Pagos0Alumno/CodAlumno c>ar 8?:9 AsSelect @ ,rom Pagos >ere CodAlumno 3 /CodAlumno
e;ecute Pagos0Alumno 4A?4
Ejecutar u !roce"i#ieto al#acea"o "e !a$o% !or a&o
6.1.1 Proce"i#ieto% co Par'#etro% "e Sali"a ( )alor "e Retoro
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 5/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -405-
Los procedimientos con par<metros de salida y los de valor de retorno se usan de formaparecida7 es decir7 primero se definen7 luego se e$ecutan y finalmente se lee el valor devueltoen el par<metro.
create procedure Alumnos?b
/Codalumno +c>ar 8?:97/Pagoscuenta int 3 : outputasselect CodAlumno7Montofrom PagosB>ere Codalumno 3 /Codalumno select /PagosCuenta 3 count8@9from PA"*SB>ere CodAlumno 3 /CodAlumnoreturn /PagosCuenta
Su ejecuci*!eclare /5aloretornado int7/CuentaPagos int#;ecute /5aloretornado3 Alumnos?b/CodAlumno34A?47/PagosCuenta3/CuentaPagos outputSelect /CuentaPagos as 4/CuentaPagos4Select 45aloretorno4 3/5aloretornado
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 6/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -406-
6.1.2 Mo%trar "e+iicioe% "e !roce"i#ieto% al#acea"o%.
SQL Server ofrece un mecanismo de ver la definici6n de los ob$etos creados en la basede datos. #sto se conoce como recuperaci6n de metadatos. La informaci6n acerca de losob$etos se almacena en los procedimientos almacenados del sistema predefinidos quepueden ser obtenidos siempre que sea necesario.
Para ver la definici6n de su procedimiento almacenado7 siga estos pasos%
1. 1ntroduzca la instrucci6n siguiente en la ventana de consulta%
#;ecute sp0>elpte;t 4PA0Alumnos4
6,1,- Ca#iar el o#re "e !roce"i#ieto% al#acea"o%.
SQL Server permite cambiar el nombre de ob$etos mediante el procedimientoalmacenado predefinidos sp0rename. #n el siguiente e$emplo7 ver< c6mo utilizar paracambiar el nombre de un procedimiento almacenado.
Pruee/ Ca#iar el o#re "e u !roce"i#ieto al#acea"o.
Para cambiar el nombre de un procedimiento almacenado7 siga estos pasos%1. 1ntroduzca la instrucci6n siguiente en la ventana de consulta%
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 7/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -407-
#;ecute sp0rename 4PA0Alumnos47 4PA0Alumnos?4.
Puede modificar con nueva consulta
2. Daga clic en e$ecutar7 y ver< el siguiente mensa$e en la ventana de resultados7 apesar de que se >a e$ecutado correctamente sp0rename%
Precauci6n% al cambiar cualquier parte del nombre de un ob$eto pueden de$ar deser v<lidas secuencias de comandos y procedimientos almacenados.
3. A>ora vaya al e;plorador de ob$etos7 e;panda el nodo de base de datos Alumnos y7 acontinuaci6n7 e;panda el nodo de programaci6n. Seleccione el nodo7 con el bot6n
derec>o y seleccione Actualizar 8refres>9procedimientos almacenados.-. #;panda el nodo de procedimientos almacenados y observe que PA0Alumnos >a
cambiado a PA0Alumnos?. La pantalla debe parecerse a la figura EFG.
Note sp0rename funciona muy bien con la mayorHa de los ob$etos7 como tablas7columnas y otros para cambiar su nombre.
6.1.- Traajar co !roce"i#ieto% al#acea"o% e )B.NET.
Pruee/ Ejecutar u !roce"i#ieto al#acea"o %i !ar'#etro% "e etra"a.#$ecutar el procedimiento almacenado PA0Aumnos que lista todos los registros de latabla alumnos
I$re%e a 0i%ual e%tu"io 212 ue0o !ro(ecto a!licaci* "e co%ola
1mports System.!ata.SqlClientModule Module? Sub Main89 !im col As 1nteger !im conn As +eB SqlConnection conn.ConnectionString 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!A&*S)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I
conn.*pen89 !im cmd As SqlCommand 3 conn.CreateCommand89 cmd.Command&ype 3 Command&ype.StoredProcedure
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 8/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -408-
cmd.Command&e;t 3 IPA0AlumnosI !im rdr As Sql!ataeader 3 cmd.#;ecuteeader89 !im ncampos 3 rdr.,ieldCount >ile rdr.ead89 ,or col 3 : &o ncampos F ? Console.rite8IK:K?I7 rdr8col97 vb&ab9
+e;t Console.riteLine89 #nd >ile Console.eadLine89 rdr.Close89 conn.Close89 #nd Sub#nd Module
Realiar lo #i%#o %i !roce"i#ieto% al#acea"o%1mports System.!ata.SqlClientModule Module? Sub Main89 !im col As 1nteger !im conn As +eB SqlConnection conn.ConnectionString 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!A&*S)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I conn.*pen89 !im cmd As SqlCommand 3 conn.CreateCommand89 cmd.Command&ype 3 Command&ype.&e;t cmd.Command&e;t 3 IS#L#C& @ ,*M ALM+*SI !im rdr As Sql!ataeader 3 cmd.#;ecuteeader89 !im ncampos 3 rdr.,ieldCount
>ile rdr.ead89 ,or col 3 : &o ncampos F ? Console.rite8IK:K?I7 rdr8col97 vb&ab9 +e;t Console.riteLine89 #nd >ile Console.eadLine89 rdr.Close89 conn.Close89 #nd Sub#nd Module
Ca#ie la ca"ea "e coe4i*
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 9/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -409-
conn.ConnectionString 3 I!ata Source38local91nitial Catalog3ALM+*S1ntegratedSecurity3&rueI
$raar e arc5i0o1mports System.!ata.SqlClient1mports System.1*
Module Module? Sub Main89 !im arc>ivo As Streamriter arc>ivo 3 +eB Streamriter 8I#%)datos)consulta?.t;tI9 !im col As 1nteger !im conn As +eB SqlConnection conn.ConnectionString 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!A&*S)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I conn.*pen89
!im cmd As SqlCommand 3 conn.CreateCommand89 cmd.Command&ype 3 Command&ype.&e;t cmd.Command&e;t 3 IS#L#C& @ ,*M ALM+*SI !im rdr As Sql!ataeader 3 cmd.#;ecuteeader89 !im ncampos 3 rdr.,ieldCount >ile rdr.ead89 ,or col 3 : &o ncampos F ? arc>ivo.rite8IK:K?I7 rdr8col97 vb&ab9 +e;t arc>ivo.riteLine89 #nd >ile rdr.Close89 conn.Close89 arc>ivo.Close89 Console.eadLine89 #nd Sub#nd Module
6.1. Proce"i#ieto% al#acea"o% co !ar'#etro%
1mports System.!ata.SqlClientModule Module? Sub Main89 !im conn As +eB SqlConnection conn.ConnectionString 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!A&*S)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I
conn.*pen89 !im cmd As SqlCommand 3 conn.CreateCommand89 cmd.Command&ype 3 Command&ype.StoredProcedure
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 10/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -410-
cmd.Command&e;t 3 IPagos0AlumnoI !im CodAlumno? As SqlParameter 3 cmd.Parameters.Add8I/CodAlumnoI7Sql!b&ype.5arC>ar7 9 CodAlumno?.!irection 3 Parameter!irection.1nput CodAlumno?.5alue 3 IA?I 4 create el procedimiento de salida
!im rdr As Sql!ataeader 3 cmd.#;ecuteeader89 !im nc As 1nteger 3 rdr.,ieldCount !im col As 1nteger >ile rdr.ead89 ,or col 3 : &o nc F ? Console.rite8IK:K?I7 rdr8col97 vb&ab9 +e;t Console.riteLine89 #nd >ile rdr.Close89 Console.eadLine89
#nd Sub#nd Module
Lo mismo pero con consultas
1mports System.!ata.SqlClientModule Module? Sub Main89 !im codalu As String !im conn As +eB SqlConnection conn.ConnectionString 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!A&*S)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I conn.*pen89 !im cmd As SqlCommand 3 conn.CreateCommand89
Console.rite8I ingrese codigo del alumno I9 codalu 3 Console.eadLine89 cmd.Command&ype 3 Command&ype.&e;t N cmd.Command&e;t 3 IS#L#C& @ ,*M PA"*S D## C*!ALM+*34I O codalu OI4 I !im rdr As Sql!ataeader 3 cmd.#;ecuteeader89 !im nc As 1nteger 3 rdr.,ieldCount !im col As 1nteger >ile rdr.ead89 ,or col 3 : &o nc F ? Console.rite8IK: K?I7 rdr8col97 vb&ab9
+e;t Console.riteLine89 #nd >ile
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 11/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -411-
rdr.Close89 Console.eadLine89 #nd Sub#nd Module
Para #o"i+icar ( eli#iar !roce"i#ieto% u%e "elete
6.1.6 E7EMPLO DE !roce"i#ieto% al#acea"o% e el %i%te#a "e 0eta%
Crear la tala cliete%C#A&# &A=L# CL1#+QdCliente int7+ombre varc>ar 8:97 Apellidos 5arC>ar 8:97!ireccion varc>ar 8:97&elefono varc>ar 897!ni varc>ar 8G9
primary ey 8idcliente99
M8u De #o"o coecta"o co %etecia% S9L "e %i%te#a "e 0eta%
1mports System.!ata.SqlClientModule Module? Sub Main89 !im cadenacone;ion As String 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!A&*S)5#+&ASJ.mdf1ntegratedSecurity3&rueConnect &imeout3J:I
!im conn As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 !im sqlqry As String 3 Iselect count8@9 from clienteI !im *pcion As 1nteger !im codcliente As String !im nombrecliente As String !im Apellidoscliente As String !im !ireccioncliente As String !im telefonocliente As String !im dnicliente As String !im comando As SqlCommand 3 +eB SqlCommand8sqlqry7 conn9 !im rdr As Sql!ataeader
!im nrocol As 1nteger !im i As 1nteger &ry
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 12/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -412-
!o Console.riteLine8I ?. listar R. modificar J Agregar #liminar salir I9 Console.rite8I 1ngrese opcion I9 *pcion 3 Console.eadLine89 Select Case *pcion Case ?
conn.*pen89 Console.riteLine8IConneccion A=1#&A.I9 comando.Command&e;t 3 sqlqry Console.riteLine8I% +umero de clientes K:I7 comando.#;ecuteScalar899 comando.Command&e;t 3 I S#L#C& @ ,*M clienteI rdr 3 comando.#;ecuteeader Console.riteLine8I#$ecutando sentencia K:I7 comando.Command&e;t9 nrocol 3 rdr.,ieldCount >ile 8rdr.ead9 ,or i 3 : &o nrocol F ? Console.rite8IK: I7 rdr."et5alue8i9.&oString.Padig>t8?:99
+e;t Console.riteLine89 #nd >ile conn.Close89
Case R conn.*pen89 Console.riteLine8I1ngrese el codigo del cliente a modificarI9 codcliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +#5* +*M=# del cliente a modificarI9 nombrecliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +uevo Apellido a ModificarI9 Apellidoscliente 3 Console.eadLine89 Console.riteLine8I1ngrese la +ueva !ireccion a ModificarI9 !ireccioncliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +uevo &elefono a ModificarI9 telefonocliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +uevo !ni I9 dnicliente 3 Console.eadLine89 comando.Command&e;t 3 I P!A&# CL1#+&# S#& idcliente3 I O codcliente O 0 I 7 nombre3 4I O nombrecliente O I47 apellidos3 4I O Apellidoscliente O
I47!ireccion 3 4I O 0 !ireccioncliente O I47 telefono3 4I O telefonocliente O I47 dni34I O dnicliente O I4I Console.riteLine8I#$ecutando sentencia K:I7 comando.Command&e;t9 comando.#;ecute+onQuery89 conn.Close89 Case J conn.*pen89 Console.riteLine8I1ngrese el codigo del cliente a AgregarI9 codcliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +#5* +*M=# del cliente a agregarI9 nombrecliente 3 Console.eadLine89
Console.riteLine8I1ngrese el +uevo Apellido a agregarI9 Apellidoscliente 3 Console.eadLine89 Console.riteLine8I1ngrese la +ueva !ireccion a agregarI9
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 13/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -413-
!ireccioncliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +uevo &elefono a agregarI9 telefonocliente 3 Console.eadLine89 Console.riteLine8I1ngrese el !ni a agregarI9 dnicliente 3 Console.eadLine89 comando.Command&e;t 3 0
I 1+S#& 1+&* CL1#+Qdcliente7nombre7Apellidos7direccion7telefono7dni9 values 8 4I O 0 codcliente O I4 7 4I O nombrecliente O I4 7 4I O Apellidoscliente O I4 7 4I O!ireccioncliente O 0 I4 74I O telefonocliente O I4 74I O dnicliente O I49I Console.riteLine8I#$ecutando sentencia K:I7 comando.Command&e;t9 comando.#;ecute+onQuery89 conn.Close89 Case conn.*pen89 Console.riteLine8I1ngrese el codigo del cliente a eliminarI9
codcliente 3 Console.eadLine89 comando.Command&e;t 3 I !#L#&# ,*M CL1#+&# D## 1dcliente3 4I O codcliente O I4 I Console.riteLine8I#$ecutando sentencia K:I7 comando.Command&e;t9 comando.#;ecute+onQuery89 conn.Close89 #nd Select Loop ntil *pcion 3 Catc> e; As Sql#;ception Console.riteLine8e;9 ,inally conn.Close89 Console.riteLine8IConneccion cerrada.I9 #nd &ry Console.eadLine89 #nd Sub#nd Module
!roce"i#ieto% al#acea"o%
!roce"i#ieto i%ertar cliete
AL&# proc insertar0cliente/1dCliente int7/nombre varc>ar 8:97/apellidos varc>ar 8:97/direccion varc>ar 8?::97/telefono varc>ar 8?:97/dni varc>ar 8G9asinsert into cliente 81dCliente7nombre7apellidos7direccion7telefono7dni9 values8/1dCliente7/nombre7/apellidos7/direccion7/telefono7/dni9
Proce"i#ieto al#acea"o eli#iar:cliete
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 14/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -414-
AL&# proc eliminar0cliente/idcliente integer asdelete from cliente B>ere idcliente3/idcliente
Proce"i#ieto al#acea"o #o%trar:cliete
AL&# proc mostrar0cliente AsSelect @ from cliente order by idcliente desc
Proce"i#ieto al#acea"o E"itar:cliete
AL&# proc editar0cliente/idcliente integer 7/nombre varc>ar 8:97/apellidos varc>ar 8:97
/direccion varc>ar 8?::97/telefono varc>ar 897/dni varc>ar 8G9asupdate cliente setnombre3/nombre7apellidos3/apellidos7direccion3/direccion7telefono3/telefono7dni3/dniB>ere idcliente3/idcliente
MENU MODO CONECTADO DE SISTEMA DE )ENTAS CON PROCEDIMIENTOSALMACENADOS
1mports System.!ata.SqlClientModule Module? Sub Main89
!im cadenacone;ion As String 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!A&*S)5#+&ASJ.mdf1ntegratedSecurity3&rueConnect &imeout3J:I
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 15/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -415-
!im conn As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 !im *pcion As 1nteger !im codcliente As String !im nombrecliente As String !im Apellidoscliente As String !im !ireccioncliente As String
!im telefonocliente As String !im dnicliente As String !im comando As SqlCommand 3 +eB SqlCommand8II7 conn9 comando.Command&ype 3 Command&ype.StoredProcedure !im rdr As Sql!ataeader !im nrocol As 1nteger !im i As 1nteger &ry !o Console.riteLine8I ?. listar R. modificar J Agregar #liminar salir I9 Console.rite8I 1ngrese opcion I9
*pcion 3 Console.eadLine89 Select Case *pcion Case ? conn.*pen89 Console.riteLine8IConneccion A=1#&A.I9 comando 3 +eB SqlCommand8IMostrar0clienteI9 comando.Connection 3 conn comando.Command&ype 3 Command&ype.StoredProcedure rdr 3 comando.#;ecuteeader Console.riteLine8I#$ecutando sentencia K:I7 comando.Command&e;t9 nrocol 3 rdr.,ieldCount >ile 8rdr.ead9 ,or i 3 : &o nrocol F ? Console.rite8IK: I7 rdr."et5alue8i9.&oString.Padig>t8G99 +e;t Console.riteLine89 #nd >ile conn.Close89
Case R 4 editar
conn.*pen89 comando 3 +eB SqlCommand8Ieditar0clienteI9 comando.Command&ype 3 Command&ype.StoredProcedure comando.Connection 3 conn Console.riteLine8I1ngrese el codigo del cliente a modificarI9 codcliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +#5* +*M=# del cliente a modificarI9 nombrecliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +uevo Apellido a ModificarI9 Apellidoscliente 3 Console.eadLine89 Console.riteLine8I1ngrese la +ueva !ireccion a ModificarI9
!ireccioncliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +uevo &elefono a ModificarI9 telefonocliente 3 Console.eadLine89
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 16/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -416-
Console.riteLine8I1ngrese el +uevo !ni I9 dnicliente 3 Console.eadLine89 comando.Parameters.Addit>5alue8I/idclienteI7 codcliente9 4 enviar losparametros comando.Parameters.Addit>5alue8I/nombreI7 nombrecliente9 comando.Parameters.Addit>5alue8I/apellidosI7 Apellidoscliente9
comando.Parameters.Addit>5alue8I/direccionI7 !ireccioncliente9 comando.Parameters.Addit>5alue8I/telefonoI7 telefonocliente9 comando.Parameters.Addit>5alue8I/dniI7 dnicliente9 comando.#;ecute+onQuery89 conn.Close89 Case J conn.*pen89 Console.riteLine8I1ngrese el codigo del cliente a AgregarI9 codcliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +#5* +*M=# del cliente a agregarI9 nombrecliente 3 Console.eadLine89
Console.riteLine8I1ngrese el +uevo Apellido a agregarI9 Apellidoscliente 3 Console.eadLine89 Console.riteLine8I1ngrese la +ueva !ireccion a agregarI9 !ireccioncliente 3 Console.eadLine89 Console.riteLine8I1ngrese el +uevo &elefono a agregarI9 telefonocliente 3 Console.eadLine89 Console.riteLine8I1ngrese el !ni a agregarI9 dnicliente 3 Console.eadLine89 comando 3 +eB SqlCommand8Iinsertar0clienteI9 comando.Connection 3 conn comando.Command&ype 3 Command&ype.StoredProcedure 4 los E paramtros comando.Parameters.Addit>5alue8I/1dClienteI7 codcliente9 comando.Parameters.Addit>5alue8I/nombreI7 nombrecliente9 comando.Parameters.Addit>5alue8I/apellidosI7 Apellidoscliente9 comando.Parameters.Addit>5alue8I/direccionI7 !ireccioncliente9 comando.Parameters.Addit>5alue8I/telefonoI7 telefonocliente9 comando.Parameters.Addit>5alue8I/dniI7 dnicliente9 Console.riteLine8I#$ecutando sentencia K:I7 comando.Command&e;t9 comando.#;ecute+onQuery89 conn.Close89
Case conn.*pen89 Console.riteLine8I1ngrese el codigo del cliente a eliminarI9 codcliente 3 Console.eadLine89 comando 3 +eB SqlCommand8Ieliminar0clienteI9 comando.Command&ype 3 Command&ype.StoredProcedure comando.Connection 3 conn 4 establece la cone;ion comando.Parameters.Add8I/idclienteI7 Sql!b&ype.+5arC>ar7 :9.5alue 3 codcliente comando.#;ecute+onQuery89 conn.Close89 #nd Select
Loop ntil *pcion 3 Catc> e; As Sql#;ception Console.riteLine8e;9
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 17/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -417-
,inally conn.Close89 Console.riteLine8IConneccion cerrada.I9 #nd &ry Console.eadLine89 #nd Sub
#nd Module
6.1.; ADO.NET < "e =i>i!e"ia?
#sta tecnologHa es una parte del.+#& ,rameBor J.: 8>abiendo sido parte del frameBordesde la versi6n ?.:9.
ADO.NET es un con$unto de componentes del softBare que pueden ser usados por los
programadores para acceder a datos y a servicios de datos. #s una parte de la biblioteca
de clases base que est<n incluidas en el Microsoft .+#& ,rameBor. #s comúnmente
usado por los programadores para acceder y para modificar los datos almacenados en
un Sistema "estor de =ases de !atoselacionales7 aunque tambi'n puede ser usado
para acceder a datos en fuentes no relacionales. A!*.+#& es a veces considerado como
una evoluci6n de la tecnologHa Active2 !ata *b$ects 8A!*97 pero fue cambiado tan
e;tensivamente que puede ser concebido como un producto enteramente nuevo.
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 18/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -418-
Ar@uitecturae"itar
A!*.+#& consiste en dos partes primarias%
Data !ro0i"er (editar -
#stas clases proporcionan el acceso a una fuente de datos7 como Microsoft SQL
Server y *racle. Cada fuente de datos tiene su propio con$unto de ob$etos del proveedor7
pero cada uno tienen un con$unto común de clases de utilidad%
• Coectio% Proporciona una cone;i6n usada para comunicarse con la fuente de
datos. &ambi'n actúa como Abstract ,actory para los ob$etos command.• Co##a"/ sado para realizar alguna acci6n en la fuente de datos7 como lectura7
actualizaci6n7 o borrado de datos relacionales.
• Para#eter/ !escribe un simple par<metro para un command . n e$emplo común
es un par<metro para ser usado en un procedimiento almacenado.
• DataA"a!ter/ IPuenteI utilizado para transferir data entre una fuente de datos y un
ob$eto !ataSet 8ver aba$o9.
• DataRea"er/ #s una clase usada para procesar eficientemente una lista grande de
resultados7 un registro a la vez.
DataSet%(editar -
Los ob$etos !ataSets7 son un grupo de clases que describen una simple base de datos
relacional en memoria7 fueron la estrella del s>oB en el lanzamiento inicial 8?.:9 del
Microsoft .+#& ,rameBor. Las clases forman una $erarquHa de contenci6n%
•n ob$eto DataSet representa un esquema 8o una base de datos entera o un
subcon$unto de una9. Puede contener las tablas y las relaciones entre esas tablas.
• n ob$eto DataTale representa una sola tabla en la base de datos. &iene
un nombre7 filas7 y columnas.
• n ob$eto Data)ie Ise sienta sobreI un !ata&able y ordena los
datos 8como una cl<usula Iorder byI de SQL9 y7 si se activa un filtro7 filtra losregistros 8como una cl<usula IB>ereI del SQL9. Para facilitar estas operacionesse usa un Hndice en memoria. &odas las !ata&ables tienen un filtro por defecto7mientras que pueden ser definidos cualquier número de !ata5ieBs adicionales7reduciendo la interacci6n con la base de datos subyacente y me$orando asH eldesempeTo.
• n DataColu# representa una columna de la tabla7
incluyendo su nombre y tipo.
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 19/68
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 20/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -420-
1mports System.!ata.SqlClientModule Module? Sub Main89 !im CadenaCone;ion As String CadenaCone;ion 3 I !ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!A&*S)ALM+*S.mdf1ntegrated
Security3&rueConnect &imeout3J:I !im conn As SqlConnection 3 +eB SqlConnection8CadenaCone;ion9 &ry conn.*pen89 Console.riteLine8I Cone;ion abiertaI9 4!isplaya las propiedades de la cone;i6n Console.riteLine8Ipropiedades de la cone;ionI9 Console.riteLine8Icadena de cone;ion% K:I7 conn.ConnectionString9 Console.riteLine8Ibase de datos% K:I7 conn.!atabase9 Console.riteLine8Ifuente de datos% K:I7 conn.!ataSource9 Console.riteLine8IServer5ersion% K:I7 conn.Server5ersion9
Console.riteLine8IState% K:I7 conn.State9 Console.riteLine8Iorstation1d% K:I7 conn.orstation1d9 Console.riteLine8Itiempo de cone;ion% K:I7 conn.Connection&imeout9 Catc> e As Sql#;ception Console.riteLine8I#rror%I O e.&oString9 ,inally conn.Close89 Console.riteLine8IConnection closed.I9 #nd &ry Console.eadLine89 #nd Sub#nd Module
1nteligence sense de vb R:?R nos ayuda a obtener propiedades y metodos de un evento
Cambie la cone;i6n y vea el resultado
CadenaCone;ion 3 I!ata Source38local91nitial Catalog3ALM+*S1ntegratedSecurity3&rue I
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 21/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -421-
PodrHa poner la cadena de cone;i6n de la siguiente manera!im conn As SqlConnection 3 +eB SqlConnection89 conn.ConnectionString 3 CadenaCone;ion 6.1. Coectar a S9L Ser0er E4!re%% co OleDCoectio. < ca#io @ue %e "ee
5acer?
Microsoft proporciona a los proveedores de datos de *L# != para Microsoft SQL Server7Microsoft Access 8Uet97 *racle y una variedad de otros formatos de arc>ivo de base dedatos y datos.
Coectar a S9L Ser0er E4!re%% co el !ro0ee"or "e "ato% OLE DB.
1mports System.!ata.*le!bModule Module? Sub Main89
!im connstring As String connstring 3 IProvider3Microsoft.AC#.*L#!=.?R.:!ataSource3#%)!A&*S)alumnos.accdbI !im conn As *le!bConnection 3 +eB *le!bConnection8connstring9 &ry conn.*pen89 Console.riteLine8I Cone;ion abiertaI9 Console.riteLine8Ipropiedades de la cone;ionI9 Console.riteLine8Icadena de cone;ion% K:I7 conn.ConnectionString9 Console.riteLine8Ibase de datos% K:I7 conn.!atabase9 Console.riteLine8Ifuente de datos% K:I7 conn.!ataSource9
Console.riteLine8IServer5ersion% K:I7 conn.Server5ersion9 Console.riteLine8IState% K:I7 conn.State9 Console.riteLine8IProveedor% K:I7 conn.Provider9 Catc> e As *le!b#;ception Console.riteLine8I#rror%I O e.&oString9 ,inally conn.Close89 Console.riteLine8IConeccion cerrada.I9 #nd &ry Console.eadLine89 #nd Sub
#nd Module
6.2 CAPITULO 11 E7ECUTANDO COMANDOS
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 22/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -422-
na vez que >aya establecido una cone;i6n a la base de datos7 que desea empezar ainteractuar con 'l y >acerlo >aciendo algo útil para usted. Puede que necesite agregar7actualizar7 o eliminar algunos datos7 o tal vez modificar la base de datos de alguna otraforma7 generalmente mediante la e$ecuci6n de una consulta. Cualquiera que sea la tarea7inevitablemente implicar< un comando.
6.2.1 Crea"o u co#a"o
Puede crear un comando utilizando el constructor SqlCommand o utilizando m'todos parala creaci6n de comandosCrear un comando con un Constructor y Asociar un comando con una cone;i6n. 8 5er en el listado R9
!im cmd As SqlCommand 3 +eB SqlCommand8Iselect count8@9 from pagosI7 con9
para e$ecutar en una base de datos7 cada comando debe estar asociado con una
cone;i6n a la base de datos. Para ello7 establezca la propiedad de cone;i6n del comando7y a fin de a>orrar recursos7 varios comandos pueden utilizar la misma cone;i6n.
6.2.2 Co+i$uraci* "e la !ro!ie"a" Co##a"Te4t.< A%i$aci* "e te4to a uco#a"o.?
cmd.Command&e;t 3 Iselect sum8monto9 as total from pagosI
6.2.3 Ejecuci* "e co#a"o%. Los comandos no son usados a menos que se puede e$ecutar7 Las diferencias entreestos m'todos dependen de los resultados esperados de la instrucci6n SQL. Lasconsultas devuelven filas de datos 8con$untos de resultados97 pero las declaraciones1+S#&7 P!A&# y !#L#&# no. !eterminar qu' m'todo utilizar teniendo en cuenta losvalores devueltos
Tale 11,1. Metodos de e$ecuci6n de comandos
Si el co##a"o retora. . . U%te" "ee U%ar . . .+ot>ing 8no es una consulta9 #;ecute+onQuery
cero o mas filas #;ecuteeader
2ML #;ecute2mleader
Si se quiere obtener un solo valor se debe utilizar el m'todo #;ecuteScalar deSqlCommand para devolver uno de los resultados.
6.2.- Utilia"o el #8to"o E4ecuteScalar < retora u %olo 0alor?.
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 23/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -423-
1mports System.!ata.SqlClientModule Module? !im cadenaCone;ion As String 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!A&*S)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I Sub Main89
!im con As SqlConnection 3 +eB SqlConnection8cadenaCone;ion9 !im cmd As SqlCommand 3 +eB SqlCommand8Iselect count8@9 from pagosI7 con9 Console.riteLine8IComando creado y conectado .I9 &ry con.*pen89 Console.riteLine8Inumero de pagos K:I7 cmd.#;ecuteScalar899 cmd.Command&e;t 3 Iselect sum8monto9 as total from pagosI !im total As Single 3 cmd.#;ecuteScalar89 Console.riteLine8I&otal de pagos K: I7 total9 cmd.Command&e;t 3 Iselect @ from alumnosI Console.riteLine8I&otal de pagos K: I7 cmd.#;ecuteScalar899
Catc> e; As Sql#;ception Console.riteLine8e;9 ,inally con.Close89 Console.riteLine8IConneccion cerrada.I9 #nd &ry Console.eadLine89 #nd Sub#nd Module#;ecuteScalar89 s6lo devuelve la primera fila del resultado y omite el resto.
6.3. CAPITULO 12 USANDO DATA READERS
6.3.1 Co#!re"er lo% lectore% "e "ato% e Geeral.
#l tercer componente de un proveedor de datos7 adem<s de cone;iones y comandos7 esel lector de datos. na vez que se >aya conectado a una base de datos y se necesitaacceder alguna foma de con$unto de resultados. AquH es donde entra el lector de datos
n lector de datos es un flu$o conectado r<pido7 sin memoria intermedia7 s6lo >aciadelante7 de s6lo lectura que recupera datos por fila. Lee una fila en un momento en que
recorre un con$unto de resultados.
#;ecuteeader89 devuelve un lector de datos7 una instancia de la clase Sql!ataeader
6.3.2 Utilia"o el #8to"o E4ecuteRea"er.
#l ob$eto Sql!ataeader tiene un m'todo de lectura que obtiene cada fila a su vez y unm'todo "et5alue que obtiene el valor de una columna de la fila.tilizando indizadores ordinales
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 24/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -424-
1mports System.!ata.SqlClientModule Module? Sub Main89 !im cadenacone;ion As String 3 0 I!ata Source38Local!=9)v??.: Attac>!b,ilename3#%)!A&*S)ALM+*S.mdf1ntegrated Security3&rueConnect &imeout3J:I !im con As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 !im nc As 1nteger !im cmd As SqlCommand 3 +eB SqlCommand8Iselect @ from pagosI7 con9 &ry con.*pen89 !im rdr As Sql!ataeader 3 cmd.#;ecuteeader nc 3 rdr.,ieldCount ,or i 3 : &o nc F ? Console.rite8IK:7G I7 rdr."et+ame8i99 +e;t
Console.riteLine89 >ile 8rdr.ead9 ,or i 3 : &o nc F ? Console.rite8IK:7G I7 rdr8i99 +e;t Console.riteLine89 #nd >ile rdr.Close89 cmd.Command&e;t 3 Iselect sum 8monto9 as total from pagos I !im suma As Single 3 cmd.#;ecuteScalar89 Console.riteLine8Itotal pagos K:I7 suma9
Catc> e; As Sql#;ception Console.riteLine8e;9 ,inally con.Close89 #nd &ry Console.eadLine89 #nd Sub#nd Module
Utilia"o lo% i"ia"ore% or"iale%.
tilice un indizador ordinal para recuperar datos de la columna del con$unto deresultados.rdr."et5alue8:9
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 25/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -425-
es una referencia a la propiedad de elemento del lector de datos y devuelve el valor de lacolumna especificada para la fila actual. #l valor se devuelve como un ob$etoSe desea los campos variables entonces tiene que >acer uno por uno
#n el listado J modifique
,or i 3 : &o nc F ? 4Console.rite8IK:7G I7 rdr8i99 Console.rite8IK:7G I7 rdr."et5alue8i99 +e;t
U%o "e colu#a% i"e4a"o !or o#re
tiliza el nombre de columna inde;aci6n especificando nombres de columna en lugar denúmeros de Hndice ordinales.#n listado R cambie los siguiente
Console.riteLine89 >ile 8rdr.ead9 Console.riteLine8IK: K?7 KR7G KJ7G KI7 rdr8I+roI9.&oString7rdr8ICodAlumnoI9.&oString7 0 rdr8I,ec>aPagoI9.&oString7 rdr8IMontoI97 rdr8IcodcursoI99 #nd >ile
Utilia"o lo% #8to"o% "e "e%cri!tor "e acce%o co ti!o.
Cuando un lector de datos devuelve un valor de un origen de datos7 los valoresresultantes se recuperan y se almacenan localmente en un.+#& escribe en lugar de tipode origen de datos originales. #sta funci6n de conversi6n de tipo en el lugar es unequilibrio entre la co>erencia y la velocidad7 asH que darle algo de control sobre los datosque se est< recuperados7 los m'todos de descriptor de acceso con tipo de datos lector e;pone que se pueden utilizar si conoce el tipo especHfico del valor que devuelve
#n el listado J cambie a
>ile 8rdr.ead9 Console.riteLine8I K: K? KR KJ K I7 rdr."et1ntJR8:97 0 rdr."etSql!ate&ime8?97 rdr."etString8R97 rdr."et!ecimal8J97 rdr."etString899
#nd >ile
Use intelligence sense para los tipos de datos
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 26/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -426-
Puede listar cualquier consulta por e$emplo
1mports System.!ata.SqlClientModule Module? Sub Main89 !im cadenacone;ion As String 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S?.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im con As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 !im sql As String 3 Iselect codalumno 7sum8monto9 as total from pagos group bycodalumnoI !im nc As 1nteger !im cmd As SqlCommand 3 +eB SqlCommand8sql7 con9 &ry con.*pen89 !im rdr As Sql!ataeader 3 cmd.#;ecuteeader nc 3 rdr.,ieldCount
,or i 3 : &o nc F ? Console.rite8IK:7G I7 rdr."et+ame8i99 +e;t Console.riteLine89 >ile 8rdr.ead9 ,or i 3 : &o nc F ? Console.rite8IK:7G I7 rdr8i99 +e;t Console.riteLine89 #nd >ile Catc> e; As Sql#;ception
Console.riteLine8e;9 ,inally con.Close89
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 27/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -427-
#nd &ry con.*pen89 cmd.Command&e;t 3 Iselect sum 8monto9 as total from pagos I !im suma As Single 3 cmd.#;ecuteScalar89 Console.riteLine8Itotal pagos K:I7 suma9 con.Close89
Console.eadLine89 #nd Sub#nd Module
sando varios comandos abriendo y cerrando el data reader
1mports System.!ata.SqlClientModule Module? Sub Main89 !im cadenacone;ion As String 3 I!ata
Source38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S?.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im con As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 !im nc As 1nteger !im comando? As SqlCommand 3 +eB SqlCommand8Iselect @ from pagosI7 con9 &ry con.*pen89 Console.riteLine8I consulta K: I7 comando?.Command&e;t9 !im rdr? As Sql!ataeader 3 comando?.#;ecuteeader nc 3 rdr?.,ieldCount ,or i 3 : &o nc F ?
Console.rite8IK:7G I7 rdr?."et+ame8i99 +e;t Console.riteLine89 >ile 8rdr?.ead9 ,or i 3 : &o nc F ? Console.rite8IK:7G I7 rdr?8i99 +e;t Console.riteLine89 #nd >ile rdr?.Close89
comando?.Command&e;t 3 Iselect @ from alumnosI Console.riteLine8I consulta K: I7 comando?.Command&e;t9 rdr? 3 comando?.#;ecuteeader nc 3 rdr?.,ieldCount
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 28/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -428-
,or i 3 : &o nc F ? Console.rite8IK:7?: I7 rdr?."et+ame8i99 +e;t Console.riteLine89 >ile 8rdr?.ead9 ,or i 3 : &o nc F ?
Console.rite8IK:7?: I7 rdr?8i99 +e;t Console.riteLine89 #nd >ile Catc> e; As Sql#;ception Console.riteLine8e;9 ,inally con.Close89 #nd &ry Console.eadLine89 #nd Sub
#nd Module
6.3.3 Oteer "ato% %ore "ato%.
Dasta a>ora7 todo lo que >as >ec>o es recuperar datos de un origen de datos. na vezque tenga un lector de datos poblada en sus manos7 puede >acer muc>o m<s. Day unnúmero de m'todos útiles para recuperar informaci6n de esquema o recuperar informaci6n relacionada directamente con un con$unto de resultados. La tabla ?RFdescribe algunos de los m'todos de metadatos y propiedades de un lector de datos.
Tala 12,-. Data Reader Metadata Propiedades y metodos
Meto"o o !ro!ie"a" No#re "e%cri!ci*!ept> na propiedad que obtiene la profundidad de anidaci6n de la
fila actual
,ieldCount na propiedad que contiene el número de columnas de la filaactual
"et!ata&ype+ame n m'todo que acepta un Hndice y devuelve una cadena quecontiene el nombre del tipo de datos de columna
"et,ield&ype n m'todo que acepta un Hndice y devuelve el tipo de ob$etode +#& ,rameBor
"et+ame n m'todo que acepta un Hndice y devuelve el nombre de lacolumna especificada
"et*rdinal n m'todo que acepta un nombre de columna y devuelve elHndice de columna
"etSc>ema n m'todo que devuelve los metadatos de columna de tabla
DasoBs na propiedad que indica si el lector de datos tiene filas
ecordsAffected na propiedad que obtiene el número de filas modificadas7insertadas o eliminadas
Pruee/ *btener informaci6n acerca de un con$unto de resultados con un lector de datos.#n este e$ercicio7 utilizar< algunos de estos m'todos y propiedades.
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 29/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -429-
1mports System.!ata.SqlClient
Module Module? Sub Main89 !im cadenacone;ion As String 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im sql As String 3 Iselect nro 7 codalumno7 fec>apago 7 monto7 codcurso from pagosI !im conn As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 &ry conn.*pen89 !im cmd As SqlCommand 3 +eB SqlCommand8sql7 conn9 !im rdr As Sql!ataeader 3 cmd.#;ecuteeader
4obteniendo nombres de las columnas Console.riteLine8IColumn +ame%K: K?I7 rdr."et+ame8:9.Padig>t8R:97rdr."et+ame8?99 4obteniendo tipos de datos de las columnas Console.riteLine8I!ata &ype%K: K?I7 rdr."et!ata&ype+ame8:9.Padig>t8R:97 0 rdr."et!ata&ype+ame8?99 Console.riteLine89 >ile 8rdr.ead9 4 obteniendo valores de las columnas para todas las filas Console.riteLine8IK: K? KR KJI7 rdr."et1ntJR8:97 rdr."etString8?97rdr."et!ate&ime8R97 rdr."et!ecimal8J99 #nd >ile 4obteniendo numero de columnas Console.riteLine89 Console.riteLine8I+umbre de ls columnas en la fila K:I7 rdr.,ieldCount9 4obteniendo informaci6n acerca de cada columna Console.riteLine8I nombre columna 4K:4 indice K? y el tipo de ob$eto KR I7rdr."et+ame8:97 rdr."et*rdinal8I+roI97 rdr."et,ield&ype8:99 Console.riteLine8I nombre columna 4 K: 4 indice K? y el tipo de ob$eto KR I7rdr."et+ame8?97 rdr."et*rdinal8ICodAlumnoI97 rdr."et,ield&ype8?99 Console.riteLine8I nombre columna 4 K: 4 indice K? y el tipo de ob$eto KR I7
rdr."et+ame8R97 rdr."et*rdinal8I,ec>apagoI97 rdr."et,ield&ype8R99 Console.riteLine8I nombre columna 4 K: 4 indice K? y el tipo de ob$eto KR I7rdr."et+ame8J97 rdr."et*rdinal8IMontoI97 rdr."et,ield&ype8J99
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 30/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -430-
Console.riteLine8I nombre columna 4 K: I7 rdr."et!ata&ype+ame8:99 rdr.Close89 Catc> e As #;ception Console.riteLine8I#rror *ccurred%I O e.&oString9 ,inally conn.Close89
#nd &ry Console.eadLine89 #nd Sub#nd Module
Oteer "ato% acerca "e la% tala%.
#l termino sc>ema tiene varios significados en lo que respecta a bases de datosrelacionales. AquH7 lo utilizamos para referirse al diseTo de una estructura de datos7especialmente en una tabla de base de datos. na tabla consta de filas y columnas7 ycada columna puede tener un tipo de datos diferente. Las columnas y sus atributos 8tipo
de datos7 longitud7 etc'tera9 conforman el esquema de la tabla.
Para recuperar informaci6n de esquema f<cilmente7 puede llamar al m'todo de"etSc>ema&able en un lector de datos. Como sugiere su nombre7 este m'todo devuelveun ob$eto System.!ata.!ata&able7 que es una representaci6n 8esquema9 de la tabla deconsulta y contiene una colecci6n de filas y columnas en forma de ob$etos !ataoB y!ataColumn. #stas filas y columnas se devuelven como ob$etos de colecci6n por laspropiedades de filas y columnas de la clase !ata&able.
Sin embargo7 aquH es donde generalmente se produce una ligera confusi6n. Los ob$etosde columna de datos no son valores de columna m<s bien7 son definiciones de columnaque representan y controlan el comportamiento de las columnas individuales. Puede ser colocadas a trav's de utilizando un indizador de nombre de columna7 y le puede decir muc>o sobre el con$unto de datos.
Oteer i+or#aci* "e e%@ue#a. AquH podr< ver una demostraci6n pr<ctica del m'todo "etSc>ema&able 8 en este caso seobtiene la informaci6n de la consulta Vselect @ from alumnos
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 31/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -431-
1mports System.!ata.SqlClientModule Module? Sub Main89 !im connstring As String 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im sql As String 3 Iselect @ from alumnosI !im conn As SqlConnection 3 +eB SqlConnection8connstring9
&ry conn.*pen89 !im cmd As SqlCommand 3 +eB SqlCommand8sql7 conn9 !im rdr As Sql!ataeader 3 cmd.#;ecuteeader 4almacenando esquema de alumnos en data table !im sc>ema As !ata&able 3 rdr."etSc>ema&able !im roB As !ataoB ,or #ac> roB 1n sc>ema.oBs !im col As !ataColumn ,or #ac> col 1n sc>ema.Columns Console.riteLine 0
88col.Column+ame W I 3 I W roB8col9.&oString99 +e;t col Console.riteLine8IFFFFFFFFFFFFFFFFI9 +e;t roB rdr.Close89 Catc> e As #;ception Console.riteLine8I#rror *ccurred%I O e.&oString9 ,inally conn.Close89 #nd &ry Console.eadLine89
#nd Sub#nd Module
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 32/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -432-
6.3.- Utiliar el re%ulta"o "e 0ario% cojuto% co u lector "e "ato%.
#n este e$emplo7 utilizar< +e;tesult89 para procesar varios con$untos de resultados.
1mports System.!ata.SqlClientModule Module? Sub Main89 !im connstring As String 3 I!ata
Source38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S?.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im sql? As String 3 IS#L#C& @ ,*M ALM+*S I !im sqlR As String 3 IS#L#C& @ ,*M PA"*S I !im sqlJ As String 3 IS#L#C& @ ,*M CS*S I !im sql As String 3 Iselect codalumno 7count8monto9 as cant7sum8monto9 as totalfrom pagos group by codalumnoI !im sql As String 3 sql? W sqlR W sqlJ W sql !im nc As 1nteger !im conn As SqlConnection 3 +eB SqlConnection8connstring9 &ry
conn.*pen89 !im cmd As SqlCommand 3 +eB SqlCommand8sql7 conn9 !im rdr As Sql!ataeader 3 cmd.#;ecuteeader !im contador As 1nteger 3 : !o Console.riteLine8I&A=LA K: I7 contador9 nc 3 rdr.,ieldCount ,or i 3 : &o nc F ? Console.rite8IK:7G I7 rdr."et+ame8i99 +e;t Console.riteLine89
>ile rdr.ead89 4 imprime una fila en el tiempo Console.riteLine8IK: % K? KRI7 rdr8:97 rdr8?97 rdr8R99
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 33/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -433-
#nd >ile Console.riteLine8II.PadLeft8E:7 I3I.&oString99 contador 3 contador W ? Loop >ile rdr.+e;tesult89 Catc> e As #;ception Console.riteLine8I#rror *ccurred%I O e.&oString9
,inally conn.Close89 #nd &ry Console.eadLine89 #nd Sub#nd Module
6.- Ejecutar %etecia% "e #o"i+icaci* "e "ato%. m'todo #;ecute+onQuery.
#l m'todo #;ecute+onQuery del comando e$ecuta instrucciones SQL en lugar deconsultas.
1. I%ertar u re$i%tro
1mports System.!ata.SqlClient
Module Module? Sub Main89 !im cadenacone;ion As String 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S?.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im conn As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 !im consulta As String 3 Iinsert into alumnos 8Codalumno7nombrealumno7fec>anac9values84A47 4P#P#474?X?RX?GY49I !im comando As SqlCommand 3 +eB SqlCommand8II7 conn9 &ry conn.*pen89
comando.Command&e;t 3 consulta Console.riteLine8I#$ecutando sentencia K:I7 comando.Command&e;t9 comando.#;ecute+onQuery89 Catc> e; As Sql#;ception Console.riteLine8e;9 ,inally conn.Close89 Console.riteLine8IConneccion cerrada.I9 #nd &ry Console.eadLine89 #nd Sub#nd Module
R. 5ea la base de alumnos y la tabla alumnos debe aparecer el datos insertado
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 34/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -434-
Tarea 1nserte varios registros generado automaticamente con c6digo
Eli#iar re$i%tro% Modifique la consulta anterior la linea que esta con negrita con
!im co%ulta As String H Idelete alumnos B>ere codalumno 34A4I
Z vea el resultado elimina el registro de codigo [A\ en la tabla alumnos
Mo"i+icacio "e re$i%tro% Cambie la consulta a y vea el resultado !im co%ulta As String H Ipdate alumnos set nombrealumno34U*"#4 B>erecodalumno 34A?4I
U%o "e !ar'#etro% "e co#a"o <a"icioal 0er e el "ocu#eto?Pru'belo% uso de par<metros de comando
Li%ti$ 11,. Co##a"Para#eter%.0
1mports System.!ata.SqlClientModule Module? Sub Main89 !im CodAlu As String 3 IAGI !im +ombreAlu As String 3 IM1"#LI !im ,ec>a+ac As String 3 I?X?XR:?:I !im conn As SqlConnection 3 +eB SqlConnection8I!ata Source38local91nitialCatalog3ALM+*S1ntegrated Security3&rueI9 4define consulta escalar !im sqlqry As String 3 Iselect count8@9from alumnosI
4define sentencia insert !im sqlins As String 3 Iinsert into alumnos8codalumno7nombrealumno7fec>anac9values8/codalu7/nombrealu7/fec>anac9I !im sqldel As String 3 Idelete from alumnos B>ere Codalumno 3 /codalu andnombrealumno 3 /nombrealuI 4creaando comandos !im cmdqry As SqlCommand 3 +eB SqlCommand8sqlqry7 conn9 !im cmdnon As SqlCommand 3 +eB SqlCommand8sqlins7 conn9 cmdnon.Prepare89 4adiciona parametros para el comando
cmdnon.Parameters.Add8I/CodAluI7 Sql!b&ype.5arC>ar7 9 cmdnon.Parameters.Add8I/+ombrealuI7 Sql!b&ype.5arC>ar7 :9 cmdnon.Parameters.Add8I/,ec>anacI7 Sql!b&ype.!ate&ime9 &ry conn.*pen89 4e$ecuta la consulta insert y numero de alumnos Console.riteLine8IA+&#S 1+S#&% +umero de alumnos K:I7cmdqry.#;ecuteScalar899 4e;ecute nonquery to inserte alumno cmdnon.Parameters8I/codaluI9.5alue 3 CodAlu cmdnon.Parameters8I/nombrealuI9.5alue 3 +ombreAlu
cmdnon.Parameters8I/,ec>a+acI9.5alue 3 ,ec>a+ac Console.riteLine8I#$ecutando sentencia K:I7 cmdnon.Command&e;t9 cmdnon.#;ecute+onQuery89
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 35/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -435-
Console.riteLine8I!#SP#S 1+S#&% +umero de alumnos K:I7cmdqry.#;ecuteScalar899 4e;ecute nonquery to delete alumno cmdnon.Command&e;t 3 sqldel Console.riteLine8I#;ecutando sentencia K:I7 cmdnon.Command&e;t9 cmdnon.#;ecute+onQuery89
Console.riteLine8I !#SP#S !#L#&#% +umero de alumnos K:I7cmdqry.#;ecuteScalar899 Catc> e; As Sql#;ception Console.riteLine8e;9 ,inally conn.Close89 Console.riteLine8IConnecion cerrada.I9 #nd &ry Console.eadLine89 #nd Sub#nd Module
6. USANDO DATASET F DATAADAPTERS < ORMA DESCONECTADA?
#l dataset para tener bases de datos a memoria.
!ataAdapter este sirve como un puente de cone;i6n entre un !ataSet yuna fuente de datos para recuperar y almacenar datos.
Con$untos de datos son completamente independientes de y pueden usarse conectadoso desconectados de orHgenes de datos. Su prop6sito fundamental es proporcionar unavista relacional de los datos almacenados en una cac>' en memoria.
6..1 Ua re0e itro"ucci* a lo% cojuto% "e "ato%.
n con$unto de datos almacena datos relacionales como colecciones de tablas de datos.La ,igura ?JF? muestra la arquitectura de con$unto de datos.La arquitectura refle$a el diseTo l6gico de una base de datos relacional. Aprender< autilizar las tablas de datos7 filas de datos y columnas de datos en este capHtulo.
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 36/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -436-
i$ure 13,1. ar@uitectura "e u Dataset
Ua re0e itro"ucci* a lo% a"a!ta"ore% "e "ato%.
Cuando crea una instancia de un con$unto de datos7 no contiene datos. Se puedeobtener un con$unto de datos poblada pasarlo a un adaptador de datos7 que se encargade los detalles de la cone;i6n y es un componente de un proveedor de datos. n con$untode datos no forma parte de un proveedor de datos. #s como un cubo7 listo para ser
llenado con agua7 pero necesita una tuberHa para permitir que el agua en el e;terior. #notras palabras7 el con$unto de datos necesita un adaptador de datos para rellenarlo condatos y apoyar el acceso al origen de datos.
Cada proveedor de datos tiene su propio adaptador de datos de la misma manera quetiene su propio lector de cone;i6n7 comando y los datos. ,igura ?JFR describe lasinteracciones entre el con$unto de datos7 el adaptador de datos y el origen de datos.
i$ure 13,2. interaccion de Dataset, data adapter,y data source
puede crear un adaptador de datos de cuatro maneras% ] puede utilizar su constructor sin par<metros 8asignaci6n de SQL y la cone;i6n m<starde9.
] Puede pasar su constructor un comando 8 cmd es un ob$eto SqlCommand9. ] Se pueden pasar una cadena SQL y una cone;i6n. ] Se pueden pasar una cadena SQL y una cadena de cone;i6n.
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 37/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -437-
Ua re0e itro"ucci* a la% tala% "e "ato%J colu#a% "e "ato% ( +ila% "e "ato%.
na tabla de datos es una instancia de la clase System.!ata.!ata&able. #sconceptualmente similar a una tabla relacional. Como se muestra en la figura ?JF?7 unatabla de datos tiene colecciones de datos filas y columnas de datos. Puede acceder a
estas colecciones anidadas a trav's de las propiedades de filas y columnas de la tabla dedatos.
*btener la colecci6n de columnas de datos utilizando la propiedad de las columnas de latabla de datos7 cuya indizador acepta un nombre de columna o un Hndice de base cero7por e$emplo 8donde dt es una tabla de datos9%
!im col As !ataColumn3dt.Columns8I,ec>a+acI9!im col As !ataColumn3dt.Column8R9
na fila de datos representa los datos de una fila. Mediante programaci6n puede agregar7
actualizar o eliminar filas en una tabla de datos. Para acceder a las filas de una tabla dedatos7 utilice su propiedad oBs7 cuya indizador acepta un Hndice de base cero7 por e$emplo 8donde dt es una tabla de datos9%
!im roB As !ataoB3dt.oBs8R9
6..3 Llear u Data%et co u a"a!ta"or "e "ato%. crear un con$unto de datos7rellenarlo con un adaptador de datos y7 a continuaci6n7 mostrar su contenido.
Lista una consulta dataset con for ne;t y mostrar el elemento de la fila y columnadeterminada
1mports System.!ata.SqlClientModule Module? Sub Main89 !im fila7 col As 1nteger !im connstring As String 3 0 I!ata Source38Local!=9)v??.: Attac>!b,ilename3#%)!atos)ALM+*S.mdf1ntegrated Security3&rueConnect &imeout3J:I !im sql As String 3 IS#L#C& @ ,*M PA"*S I !im conn As SqlConnection 3 +eB SqlConnection8connstring9 &ry conn.*pen89 !im cmd As SqlCommand 3 +eB SqlCommand8sql7 conn9 !im da As Sql!ataAdapter 3 +eB Sql!ataAdapter 8sql7 conn9 !im ds As !ataSet 3 +eB !ataSet
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 38/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -438-
da.,ill8ds7 IpagosI9 Console.riteLine8I+ombre de la consulta% K:I7 sql9 Console.riteLine8Inombre de la tabla% K:I7 ds.&ables8:99 Console.riteLine8Ivalores de los datosI9 !im nfilas As 1nteger 3 ds.&ables8:9.oBs.Count !im ncol As 1nteger 3 ds.&ables8:9.Columns.Count
,or fila 3 : &o nfilas F ? ,or col 3 : &o ncol F ? Console.rite8I K:I7 ds.&ables8:9.oBs8fila9.1tem8col9.&oString.Padig>t8?:99 +e;t col Console.riteLine89 +e;t fila Console.riteLine8I#lemento de fila R y col J 3 K:I7 ds.&ables8:9.oBs8R9.1tem8J99 Console.riteLine8Imodificamos elementoI9 ds.&ables8:9.oBs8R9.1tem8J9 3 :: Console.riteLine8I#lemento de fila R y col J 3 K:I7 ds.&ables8:9.oBs8R9.1tem8J99 Catc> e As #;ception
Console.riteLine8I#rror *ccurred%I O e.&oString9 ,inally conn.Close89 #nd &ry Console.eadLine89 #nd Sub#nd Module
Se !o"rKa ta#i8 #o%trar otra% caracterK%tica%
Console.riteLine8Inombre de la columna : K:I7 ds.&ables8:9.Columns8:9.Column+ame9 Console.riteLine8Inombre de la columna : K:I7ds.&ables8:9.Columns8:9.!ata&ype9
6..- Mo%trar to"a% la% tala% o co%ulta%
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 39/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -439-
1mports System.!ata.SqlClientModule Module? Sub Main89
!im fila7 col7 As 1nteger !im connstring As String 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im sql As String 3 IS#L#C& @ ,*M ALM+*SS#L#C& @ ,*MPA"*SS#L#C& @ ,*M CS*S I !im conn As SqlConnection 3 +eB SqlConnection8connstring9 &ry conn.*pen89 !im da As Sql!ataAdapter 3 +eB Sql!ataAdapter 8sql7 conn9 !im ds As !ataSet 3 +eB !ataSet da.,ill8ds7 IpagosI9 ds.&ables8:9.&able+ame 3 IalumnosI ds.&ables8?9.&able+ame 3 IcursosI ds.&ables8R9.&able+ame 3 IpagosI Console.riteLine8I+ombre de la consulta% K:I7 sql9 !im ntablas As 1nteger 3 ds.&ables.Count !im nfilas As 1nteger !im ncol As 1nteger ,or 3 : &o ntablas F ? Console.riteLine8I &A=LA% K:I7 ds.&ables899
Console.riteLine8I3333333333333I9 nfilas 3 ds.&ables89.oBs.Count ncol 3 ds.&ables89.Columns.Count ,or i 3 : &o ncol F ?
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 40/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -440-
Console.rite8I K:I7ds.&ables89.Columns8i9.Column+ame.&oString.Padig>t8?R99 +e;t i Console.riteLine89 ,or fila 3 : &o nfilas F ? ,or col 3 : &o ncol F ?
Console.rite8I K:I7ds.&ables89.oBs8fila9.1tem8col9.&oString.Padig>t8?R99 +e;t col Console.riteLine89 +e;t fila +e;t Console.riteLine8I#lemento de la tabla ? fila R y col J 3 K:I7ds.&ables8?9.oBs8R9.1tem8J99 Console.riteLine8Imodificamos elementoI9 ds.&ables8?9.oBs8R9.1tem8J9 3 :: Console.riteLine8I#lemento de la tabla ? fila R y col J 3 K:I7
ds.&ables8?9.oBs8R9.1tem8J99 Catc> e As #;ception Console.riteLine8I#rror *ccurred%I O e.&oString9 ,inally conn.Close89 #nd &ry Console.eadLine89 #nd Sub#nd Module
Pue"e ta#i8 !olar el "ata%et "e la %i$uiete #aera
!im sql As String !im conn As SqlConnection 3 +eB SqlConnection8connstring9 &ry conn.*pen89 !im da As Sql!ataAdapter 3 +eB Sql!ataAdapter8II7 conn9 !im ds As !ataSet 3 +eB !ataSet da.SelectCommand.Command&e;t 3 IS#L#C& @ ,*M ALM+*SI da.,ill8ds7 IalumnosI9 da.SelectCommand.Command&e;t 3 IS#L#C& @ ,*M PA"*SI
da.,ill8ds7 IpagosI9 da.SelectCommand.Command&e;t 3 IS#L#C& @ ,*M CS*SI da.,ill8ds7 IcursosI9 Console.riteLine8I+ombre de la consulta R% K:I7da.SelectCommand.Command&e;t9
6.6 Eje#!lo "e +or eac5 ( +or e4t
Eje#!li+icare#o% co arre$lo%,or #ac> element ( As datatype - 1n group ( statements -
( #;it ,or - ( statements -+e;t ( element -
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 41/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -441-
Module Mo"ule1 Sub Mai<? !im A<? As 1nteger H 1J 2J 3J -J !im i As 1nteger J ro As 1nteger Co%ole.=riteLie<I Mostrando con for ne;tI?
,or i H &o - Co%ole.=rite<A<i?.ToStri$.Pa"Ri$5t<1?? +e;t i Co%ole.=riteLie<? Co%ole.=riteLie<I Mostrando con for eac>I? ,or #ac> ro 1n A Co%ole.=rite<ro.ToStri$.Pa"Ri$5t<1?? +e;t Co%ole.Rea"Lie<? #nd Sub#nd Module
Eje#!lo 2 1mports System.!ata.SqlClient
Module Module? Sub Main89 4 crear un array y rellenarlo con valores !im lsColores89 As String 3 KIAzulI7 I5erdeI7 IMarinoI7 I5ioletaI !im lsColor As String 4 en cada iteraci6n se obtiene un elemento 4 del array lsColores7 y se guarda en la variable lsColor ,or #ac> lsColor 1n lsColores Console.rite8IK: I7 lsColor9 +e;t Console.eadLine89
#nd Sub#nd Module
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 42/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -442-
Public Class ,orm?
Private Sub =utton?0Clic8=y5al sender As System.*b$ect7 =y5al e As System.#ventArgs9 Dandles =utton?.Clic !im ncontroles As 1nteger 3 Me.Controls.Count List=o;?.1tems.Add8I+ame &e;tI9 ,or #ac> Control As Control 1n Me.Controls List=o;?.1tems.Add8Control.+ame O I I O Control.&e;t9 +e;t Control List=o;?.1tems.Add8Inro controles I O ncontroles9 #nd Sub#nd Class
Utilia"o +or eac5
1mports System.!ata.SqlClientModule Module? Sub Main89 !im connstring As String 3 I !ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im sql As String 3 IS#L#C& @ ,*M PA"*S I !im conn As SqlConnection 3 +eB SqlConnection8connstring9 &ry
conn.*pen89 !im da As Sql!ataAdapter 3 +eB Sql!ataAdapter 8sql7 conn9 !im ds As !ataSet 3 +eB !ataSet
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 43/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -443-
da.,ill8ds7 IPA"*SI9 4displaya los datos !im dt As !ata&able 3 ds.&ables8IPA"*SI9 !im roB As !ataoB ,or #ac> roB 1n dt.oBs !im col As !ataColumn
,or #ac> col 1n dt.Columns Console.rite8roB8col9.&oString.Padig>t8?R99 +e;t col Console.riteLine89 +e;t roB Catc> e As #;ception Console.riteLine8I#rror *ccurred%I O e.&oString9 ,inally conn.Close89 #nd &ry Console.eadLine89
#nd Sub#nd Module
6.; iltrar ( or"ear e u cojuto "e "ato%.
#n el e$emplo anterior7 se vio c6mo e;traer datos de un con$unto de datos. Confrecuencia7 desear< din<micamente filtrar u ordenar los datos. #n el siguiente e$emplo7ver< c6mo se pueden utilizar filas de datos para ello.
+iltra"o ( or"ea"o "i'#ica#ete "ato% e u Data%et.
1mports System.!ata.SqlClientModule Module? Sub Main89 !im cadenacone;ion As String 3 I !ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im sql? As String 3 Iselect nro7 codalumno7 Monto from pagosI !im con As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 &ry con.*pen89 !im da As Sql!ataAdapter 3 +eB Sql!ataAdapter da.SelectCommand 3 +eB SqlCommand8sql?7 con9 !im ds As !ataSet 3 +eB !ataSet
da.,ill8ds7 IpagosI9 4 obtiene la coleccion de la tablas !im dtc As !ata&ableCollection 3 ds.&ables 4 displaya datos de la primera tablas
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 44/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -444-
Console.riteLine8Iesults de la consulta K: I7 sql?9 Console.riteLine88I+roI.Padig>t8?:9 W ICodalumnoI.PadLeft8?:9 WIMontoI.PadLeft8?:9 W ControlC>ars.Lf99 44 poner filtro para displayar !im fl As String 3 Icodalumno 3 4A?4I !im srt As String 3 I+roI
4 display los datos filtrado y ordenados !im roB As !ataoB ,or #ac> roB 1n dtc8IpagosI9.Select8fl7 srt9 Console.riteLine8IK: K? KR I7 roB8I+roI9.&oString.PadLeft8?:97roB8ICodAlumnoI9.&oString.PadLeft8?:97 roB8IMontoI9.&oString.PadLeft8?:99 +e;t roB Catc> e As #;ception Console.riteLine8I#rror *ccurred%I O e.&oString9 ,inally con.Close89 #nd &ry
Console.eadLine89 #nd Sub#nd Module
Listar un filtrado ingresando codigo por teclado
1mports System.!ata.SqlClientModule Module? Sub Main89 !im cadenacone;ion As String 3 I !ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S?.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im CA!#+A As String Console.rite8I1+"#S# C*!1"* !#L ALM+* I9 CA!#+A 3 Console.eadLine89 !im sql? As String 3 Iselect @ from pagos D## codalumno3 4I 0 O CA!#+A O I4*!# =Z M*+&* !#SCI !im con As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 &ry con.*pen89 !im da As Sql!ataAdapter 3 +eB Sql!ataAdapter da.SelectCommand 3 +eB SqlCommand8sql?7 con9 !im ds As !ataSet 3 +eB !ataSet
da.,ill8ds7 IpagosI9 Console.riteLine89 !im +, As 1nteger !im +C As 1nteger 7 fila As 1nteger 7 col As 1nteger
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 45/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -445-
+, 3 ds.&ables8:9.oBs.Count +C 3 ds.&ables8:9.Columns.Count ,or col 3 : &o +C F ? Console.rite8IK: I7 ds.&ables8:9.Columns8col9.Column+ame9 +e;t col Console.riteLine89
,or fila 3 : &o +, F ? ,or col 3 : &o +C F ? Console.rite8I K: I7 ds.&ables8:9.oBs8fila9.1tem8col99 +e;t col Console.riteLine89 +e;t fila Catc> e As #;ception Console.riteLine8I#rror *ccurred%I O e.&oString9 ,inally con.Close89 #nd &ry
Console.eadLine89 #nd Sub#nd Module
Mostrar todos los registros de filtrado por codigo del alumno y ordenado por numero
1mports System.!ata.SqlClientModule Module? Sub Main89 !im connstring As String 3 I !ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S?.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im sql As String 3 Iselect @ from alumnos I !im conn As SqlConnection 3 +eB SqlConnection8connstring9 &ry !im da As +eB Sql!ataAdapter 89 da.SelectCommand 3 +eB SqlCommand8sql7 conn9 !im ds As +eB !ataSet89 da.,ill8ds7 IalumnosI9 !im dt As !ata&able 3 ds.&ables8IalumnosI9 4 La columna Codalumno deberHa ser nullable dt.Columns8IcodalumnoI9.AlloB!=+ull 3 &rue dt.oBs8:98I+ombreAlumnoI9 3 IAL#UA+!*I
4 add a roB !im neBoB As !ataoB 3 dt.+eBoB89 neBoB8ICodalumnoI9 3 IAI neBoB8I+ombreAlumnoI9 3 IMA1AI
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 46/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -446-
neBoB8I,ec>a+acI9 3 I?X?X?GYI dt.oBs.Add8neBoB9 4 display roBs !im roB As !ataoB ,or #ac> roB 1n dt.oBs Console.riteLine8IK: K? KRI7 roB8IcodalumnoI9.&oString89.PadLeft897
roB8InombrealumnoI9.&oString89.Padig>t8R:97 roB8Ifec>anacI9.&oString.Padig>t8:99 +e;t roB Catc> e As #;ception Console.riteLine8I#rror% I W e.&oString9 ,inally conn.Close89 #nd &ry Console.eadLine89 #nd Sub#nd Module
Si +iltro or"ea"o !or #oto 8 muestra todos los registros9,or #ac> roB 1n dtc8IpagosI9.Select8II7 IMontoI9
Si +iltro or"ea"o !or #oto e +or#a "e%ce"ete,or #ac> roB 1n dtc8IpagosI9.Select8II7 IMonto !escI9
iltra"o !or co"i$o "e alu#o ( or"ea"o !or +ec5a!a$o ,or #ac> roB 1n dtc8IpagosI9.Select8Icodalumno34A?4I7 I,#CDAPA"* !escI9
Si o are i %e cierra la coe4io +ucioa i$ual 8 es modo desconectado9
NOTA %e !ue"e realiar lo #i%#o co
1mports System.!ata.SqlClientModule Module? Sub Main89 !im fila As 1nteger 7 col As 1nteger !im cadenacone;ion As String 3 I!ataSource3.)SQL#2P#SSAttac>!b,ilename3#%)!A&*S)alumnos.mdf1ntegratedSecurity3&rueConnect &imeout3J:ser 1nstance3&rueI !im sql? As String 3 Iselect nro7 codalumno7 Monto from pagos B>ere
codalumno34A?4 order by +ro AscI !im con As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 &ry con.*pen89 !im da As Sql!ataAdapter 3 +eB Sql!ataAdapter da.SelectCommand 3 +eB SqlCommand8sql?7 con9 !im ds As !ataSet 3 +eB !ataSet da.,ill8ds7 IpagosI9 ,or col 3 : &o ds.&ables8:9.Columns.Count F ? Console.rite8IK:I7ds.&ables8:9.Columns8col9.Column+ame.&oString.Padig>t8?R99
+e;t Console.riteLine89 ,or fila 3 : &o ds.&ables8:9.oBs.Count F ?
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 47/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -447-
,or col 3 : &o ds.&ables8:9.Columns.Count F ? Console.rite8IK:I7 ds.&ables8:9.oBs8fila9.1tem8col9.&oString.Padig>t8?R99 +e;t Console.riteLine89 +e;t Catc> e As #;ception
Console.riteLine8I#rror *ccurred%I O e.&oString9 ,inally con.Close89 #nd &ry Console.eadLine89 #nd Sub#nd Module
Co#!araci* "e ilterSort a Po!DataSet.<0er "ocu#eto?U%a"o 0i%ta% "e "ato%.8ver documento9
6. MODIICAR DATOS EN UN DATASET -1
Note Los cambios realizados a un con$unto de datos no se propagan autom<ticamente auna base de datos. Para guardar los cambios en una base de datos7 debe conectarse denuevo a la base de datos y realizar e;plHcitamente las actualizaciones necesarias.
6..1 Mo"i+icar ua tala "e "ato% e u Data%et.
5amos a actualizar una fila y agregar una fila en una tabla de datos
1mports System.!ata.SqlClientModule Module? Sub Main89 !im connstring As String 3 I!ata Source3.)sqle;press1ntegratedSecurity3&ruedatabase3AlumnosI !im sql As String 3 Iselect @ from alumnos I !im conn As SqlConnection 3 +eB SqlConnection8connstring9 &ry !im da As +eB Sql!ataAdapter89 da.SelectCommand 3 +eB SqlCommand8sql7 conn9
!im ds As +eB !ataSet89 da.,ill8ds7 IalumnosI9 !im dt As !ata&able 3 ds.&ables8IalumnosI9 4 La columna Codalumno deberHa ser nullable dt.Columns8IcodalumnoI9.AlloB!=+ull 3 &rue dt.oBs8:98I+ombreAlumnoI9 3 IAL#UA+!*I 4 add a roB !im neBoB As !ataoB 3 dt.+eBoB89 neBoB8ICodalumnoI9 3 IAI neBoB8I+ombreAlumnoI9 3 IMA1AI neBoB8I,ec>a+acI9 3 I?X?X?GYI
dt.oBs.Add8neBoB9 4 display roBs !im roB As !ataoB
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 48/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -448-
,or #ac> roB 1n dt.oBs Console.riteLine8IK: K? KRI7 roB8IcodalumnoI9.&oString89.PadLeft897roB8InombrealumnoI9.&oString89.Padig>t8R:97 roB8Ifec>anacI9.&oString.Padig>t8:99 +e;t roB Catc> e As #;ception Console.riteLine8I#rror% I W e.&oString9
,inally conn.Close89 #nd &ry Console.eadLine89 #nd Sub#nd Module
i$ure 13,6.Modificando un data table
6..2 Pro!a$ar ca#io% a u ori$e "e "ato%. -1
n adaptador de datos rellena las tablas de datos de un con$unto de datos. Lo que no >a
visto aún es c6mo un adaptador de datos se actualiza y sincroniza un origen de datos condatos de un con$unto de datos. &iene tres propiedades que apoyan 8an<logo a supropiedad SelectCommand7 que apoya las consultas9%
] pdateCommand] 1nsertCommand] !eleteCommand
Se describir< brevemente cada una de estas propiedades y luego ponerlas a traba$ar.
Pro!ie"a" U!"ateCo##a".
La propiedad pdateCommand del adaptador de datos contiene el comando que se utilizapara actualizar el origen de datos cuando se llama al m'todo pdate del adaptador dedatos.
Pro!a$aci* "e ca#io% "e cojuto "e "ato% a u ori$e "e "ato%. AquH va acambiar el nombre del alumnos en la primera fila de la tabla alumnos y persiste el cambioen la base de datos "a.U!"ateCo##a" H c#" "a.U!"ate<"%J IalumnosI?se puede ver la 7modificaci6n en la tabla alumnos
Pro!ie"a" I%ertCo##a".
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 49/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -449-
#l adaptador de datos utiliza la propiedad 1nsertCommand para insertar filas en una tabla. Al llamar al m'todo pdate7 todas las filas en la tabla de datos se buscan y se propaga ala base de datos.
Pro!a$aci* "e ue0a% +ila% "e cojuto "e "ato% a u ori$e "e "ato%. 5amos apropagar una nueva fila a la base de datos7
Pro!ie"a" DeleteCo##a". tilice la propiedad !eleteCommand para e$ecutar instrucciones SQL y eliminar.#n este e$emplo7 podr< modificar de nuevo para eliminar una fila de la base de datos.
Co%tructore% "e co#a"o.
Para poder generar din<micamente instrucciones 1+S#&7 !#L#&# y P!A elgenerador de comando utiliza la propiedad SelectCommand del adaptador de datos parae;traer metadatos de la tabla de base de datos.
Utilia"o S@lCo##a"Buil"er.
1mports System.!ata.SqlClientModule Module? Sub Main89 !im connstring As String 3 I !ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S?.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im qry As String 3 Iselect @ from alumnosI !im conn As SqlConnection 3 +eB SqlConnection8connstring9 &ry !im da As +eB Sql!ataAdapter 89 da.SelectCommand 3 +eB SqlCommand8qry7 conn9
4create command builder !im cb As SqlCommand=uilder 3 +eB SqlCommand=uilder 8da9 !im ds As +eB !ataSet89 da.,ill8ds7 IalumnosI9 !im dt As !ata&able 3 ds.&ables8IalumnosI9 !im neBoB As !ataoB 3 dt.+eBoB89 neBoB8IcodalumnoI9 3 IAYI neBoB8InombrealumnoI9 3 IMA&1+I neBoB8Ifec>a+acI9 3 I?X?XR::YI dt.oBs.Add8neBoB9 !im roB As !ataoB ,or #ac> roB 1n dt.oBs Console.riteLine8IK: K? KRI7 0 roB8IcodalumnoI9.&oString89.Padig>t8?97 0
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 50/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -450-
roB8InombrealumnoI9.&oString89.PadLeft8R:97 roB8Ifec>anacI99 +e;t roB da.pdate8ds7 IalumnosI9 Catc> e As #;ception Console.riteLine88I#rror% I W e.&oString99 ,inally
conn.Close89 #nd &ry Console.eadLine89 #nd Sub#nd Module
6..3 Utilia"o cojuto% "e "ato% ( ML.
2ML es el medio fundamental para transferencia de datos en.A!*.+#&. !e >ec>o7 2MLes una base importante para A!*.+#&. Con$untos de datos organizan datos internamenteen formato 2ML y tienen una variedad de m'todos para leer y escribir en 2ML. Por
e$emplo%
• Puede importar y e;portar la estructura de un con$unto de datos como un esquema
2ML utilizando m'todos ead2mlSc>ema de System.!ata.!ataSet yrite2mlSc>ema.
• Puede leer los datos 8y7 opcionalmente7 el esquema9 de un con$unto de datos y
escribir en un arc>ivo 2ML con ead2ml89 y rite2ml89. #sto puede ser útil alintercambiar datos con otra aplicaci6n o >acer una copia local de un con$unto dedatos.
• Se puede enlazar un con$unto de datos a un documento 2ML 8una instancia de
System.2ml. 2ml!ata!ocument9. #l documento de con$unto de datos y los datos sesincronizan7 tan bien A!*.Las operaciones de la red o 2ML pueden utilizarse paramodificarlo.
E4tracci* "e u cojuto "e "ato% a u arc5i0o ML.
Puede conservar el contenido y esquema de un con$unto de datos en un arc>ivo 2MLutilizando el m'todo de rite2ml del con$unto de datos o en arc>ivos separados medianterite2ml89 y rite2mlSc>ema89. rite2ml89 est< sobrecargado7 y en este e$emplomostraremos una versi6n que e;trae los datos y el esquema.
1mports System.!ata.SqlClientModule Module? Sub Main89 !im connstring As String 3 I !ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S?.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im sql As String 3 ISelect @ from alumnosI !im conn As SqlConnection 3 +eB SqlConnection8connstring9 &ry !im da As Sql!ataAdapter 3 +eB Sql!ataAdapter da.SelectCommand 3 +eB SqlCommand8sql7 conn9
conn.*pen89 !im ds As !ataSet 3 +eB !ataSet da.,ill8ds7 IAlumnosI9
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 51/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -451-
4e;tract dataset to 2ML file ds.rite2ml8I#%)!A&*S)alumnostable.;mlI9 Console.riteLine8I el arc>ivo 2ML a sido creadoI9 Catc> e As #;ception Console.riteLine8I#rror *ccurred%I O e.&oString9 ,inally
conn.Close89 #nd &ry Console.eadLine89 #nd Sub#nd Module
J. +o parece >aber ocurrido7 pero eso es porque escribi6 a un arc>ivo en lugar de a lapantalla. Abra productstable.;ml para ver el c6digo 2ML. 8na forma en 5isual Studioes utilizar el arc>ivo ^ abrir el arc>ivo9. ,igura ?JF?R muestra el 2ML que se e;traen delas primeras filas de cinco productos.
i$ure 13,12. Data table extracted as XML
!e forma predeterminada7 documentos e;traHdos 2ML son arc>ivos de te;to sin formato.Puede abrir el arc>ivo productstable.;ml en cualquier editor7 o incluso utilizar el tipo o m<scomandos para verlo desde la lHnea de comandos.
Tala% "e "ato% %i cojuto% "e "ato%. 8opcional9
Ete"ie"o "ata%et co ti!o ( %i ti!o<o!cioal?
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 52/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -452-
6..- MENU MODO CONECTADO
Menu de mantenimiento de base de datos alumnos
1mports System.!ata.SqlClient
Module Module? Sub Main89 !im cadenacone;ion As String 3 I !ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im conn As SqlConnection 3 +eB SqlConnection8cadenacone;ion9 !im sqlqry As String 3 Iselect count8@9 from alumnosI !im *pcion As 1nteger !im codalumno As String !im nombrealumno As String !im ,ec>a+ac As String
!im comando As SqlCommand 3 +eB SqlCommand8sqlqry7 conn9 !im rdr As Sql!ataeader !im nrocol As 1nteger !im i As 1nteger &ry !o Console.riteLine8I ?. listar R. modificar J Agregar #liminar salir I9 Console.riteLine8I 1ngrese opcion I9 *pcion 3 Console.eadLine89 Select Case *pcion Case ? conn.*pen89 Console.riteLine8IConneccion A=1#&A.I9 comando.Command&e;t 3 sqlqry Console.riteLine8I% +umero de alumnos K:I7 comando.#;ecuteScalar899 comando.Command&e;t 3 I S#L#C& @ ,*M ALM+*SI rdr 3 comando.#;ecuteeader Console.riteLine8I#$ecutando sentencia K:I7 comando.Command&e;t9 nrocol 3 rdr.,ieldCount >ile 8rdr.ead9 ,or i 3 : &o nrocol F ?
Console.rite8IK: I7 rdr."et5alue8i9.&oString.Padig>t8?:99 +e;t Console.riteLine89 #nd >ile conn.Close89
Ca%e 2 co.O!e<? Co%ole.=riteLie<I$re%e el co"i$o "el alu#o a #o"i+icar? co"alu#o H Co%ole.Rea"Lie<? Co%ole.=riteLie<I$re%e el NUE)O NOMBRE "el alu#o a
#o"i+icar? o#realu#o H Co%ole.Rea"Lie<?
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 53/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -453-
Co%ole.=riteLie<I$re%e el NUE)A +ec5a "e aci#ieto111? ec5aNac H Co%ole.Rea"Lie<? co#a"o.Co##a"Te4t H UPDATE ALUMNOS SETNOMBREALUMNO H Q o#realu#o Q J ECANACH Q ec5aNac Q =ERE CODALUMNO H Q co"alu#o Q
Co%ole.=riteLie<Ejecuta"o %etecia Jco#a"o.Co##a"Te4t? co#a"o.E4ecuteNo9uer(<? co.Clo%e<?
Case J conn.*pen89 Console.riteLine8I1ngrese el codigo del alumno a AgregarI9 codalumno 3 Console.eadLine89 Console.riteLine8I1ngrese +*M=# del alumno a insertarI9 nombrealumno 3 Console.eadLine89
Console.riteLine8I1ngrese fec>a de nacimiento 4?X4?X?GG4I9 ,ec>a+ac 3 Console.eadLine89Console.riteLine8I#$ecutando sentencia K:I7 comando.Command&e;t9 comando.Command&e;t 3 0 I1+S#& ALM+*S 8C*!ALM+*7+*M=#ALM+*7,#CDA+AC 9I W 0 I5AL#S 84 I O codalumno O I474I O nombrealumno O I474I O ,ec>a+ac O I49I
comando.#;ecute+onQuery89 conn.Close89 Case conn.*pen89
Console.riteLine8I1ngrese el codigo del alumno a eliminarI9 codalumno 3 Console.eadLine89 comando.Command&e;t 3 I !#L#&# ,*M ALM+*S D##C*!ALM+* 3 4I O codalumno O I4 I Console.riteLine8I#$ecutando sentencia K:I7 comando.Command&e;t9 comando.#;ecute+onQuery89 conn.Close89 #nd Select Loop ntil *pcion 3 Catc> e; As Sql#;ception Console.riteLine8e;9
,inally conn.Close89 Console.riteLine8IConneccion cerrada.I9 #nd &ry Console.eadLine89 #nd Sub#nd Module
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 54/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -454-
OR EAC CON TRES TABLAS
1mports System.!ata.SqlClientModule Module? Sub Main89 !im connstring As String 3 I!ata Source3.)sqle;press1ntegratedSecurity3&ruedatabase3alumnosI !im conn As SqlConnection 3 +eB SqlConnection8connstring9 !im Col&abla As !ataColumn !im fila&abla As !ataoB !im tabla As !ata&able &ry conn.*pen89 !im da As Sql!ataAdapter 3 +eB Sql!ataAdapter8II7 conn9 da.SelectCommand.Command&e;t 3 IS#L#C& @ ,*M ALM+*S I
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 55/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -455-
!im ds As !ataSet 3 +eB !ataSet da.,ill8ds7 IALM+*SI9 da.SelectCommand.Command&e;t 3 IS#L#C& @ ,*M PA"*S I da.,ill8ds7 IPA"*SI9 da.SelectCommand.Command&e;t 3 IS#L#C& @ ,*M CS*S I da.,ill8ds7 ICS*SI9
Console.riteLine8I nombre de dataset K: I7 ds.!ataSet+ame9 Console.riteLine8I numero de tablas K: I7 ds.&ables.Count9 ,or #ac> tabla 1n ds.&ables Console.riteLine8I nombre de la tabla K: I7 tabla.&able+ame9 ,or #ac> Col&abla 1n tabla.Columns Console.rite8I K: I7 Col&abla.Column+ame9 +e;t Console.riteLine89 ,or #ac> fila&abla 1n tabla.oBs ,or #ac> Col&abla 1n tabla.Columns Console.rite8I K: I7 fila&abla.1tem8Col&abla99
+e;t Col&abla Console.riteLine89 +e;t fila&abla +e;t tabla Catc> e As #;ception Console.riteLine8I#rror *ccurred%I O e.&oString9 ,inally conn.Close89 #nd &ry Console.eadLine89 #nd Sub#nd Module
6.. MENU DE BASE DE DATOS EN ORMA DESCONECTADA
r ealizar el mantenimiento de la base de datos alumnos en forma desconectada usandodataset7 datatable yXo datavieB similar a la mostrada
1mports System.!ata.SqlClient
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 56/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -456-
Module Module? Sub Main89 !im cadenacone;ion As String 3 I !ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im conn As SqlConnection 3 +eB SqlConnection8cadenacone;ion9
!im *pcion As 1nteger 7 Pos As 1nteger !im codalumno As String !im nombrealumno As String !im ,ec>a+ac As String 4!im comando As SqlCommand 3 +eB SqlCommand8II7 conn9 !im nfilas As 1nteger 7 ncol As 1nteger 7 i As 1nteger !im fila7 col As 1nteger !im da As Sql!ataAdapter 3 +eB Sql!ataAdapter 8II7 conn9 !im ds As !ataSet 3 +eB !ataSet !im dt As !ata&able 3 +eB !ata&able !im filaeg As !ataoB
&ry da.SelectCommand.Command&e;t 3 IS#L#C& @ ,*M ALM+*S I da.,ill8ds7 IALM+*SI9 dt 3 ds.&ables8IalumnosI9 !o Console.riteLine8I ?. listar R. modificar J Agregar #liminar #nviar Cambios E salir I9 Console.riteLine8I 1ngrese opcion I9 *pcion 3 Console.eadLine89
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 57/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -457-
Select Case *pcion Case ? nfilas 3 dt.oBs.Count ncol 3 dt.Columns.Count Console.riteLine8I nombre de la tabla K: I7 dt.&able+ame9 ,or col 3 : &o ncol F ?
Console.rite8I K: I7 dt.Columns8col9.Column+ame9 +e;t Console.riteLine89 ,or fila 3 : &o nfilas F ? ,or col 3 : &o ncol F ? Console.rite8I K: I7 dt.oBs8fila9.1tem8col99 +e;t Console.riteLine89 +e;t
Case R 4 modificar
Console.riteLine8I1ngrese la fila de la tabla a modificarI9 pos 3 Console.eadLine Console.riteLine8I1ngrese codigo de alumno a modifcar I9 codalumno 3 Console.eadLine89 Console.riteLine8I1ngrese +*M=# del alumno a insertarI9 nombrealumno 3 Console.eadLine89 Console.riteLine8I1ngrese fec>a de nacimiento 4?X4?X?GG4I9 ,ec>a+ac 3 Console.eadLine89 ds.&ables8:9.oBs8pos9.1tem8:9 3 codalumno ds.&ables8:9.oBs8pos9.1tem8?9 3 nombrealumno ds.&ables8:9.oBs8pos9.1tem8R9 3 ,ec>a+ac
Case J 4 adicionar Console.riteLine8I1ngrese el codigo del alumno a AgregarI9 codalumno 3 Console.eadLine89 Console.riteLine8I1ngrese +*M=# del alumno a insertarI9 nombrealumno 3 Console.eadLine89 Console.riteLine8I1ngrese fec>a de nacimiento 4?X4?X?GG4I9 ,ec>a+ac 3 Console.eadLine89 filaeg 3 dt.+eBoB89 filaeg8ICodalumnoI9 3 codalumno
filaeg8?9 3 nombrealumno filaeg8R9 3 ,ec>a+ac dt.oBs.Add8filaeg9 Case Console.riteLine8I1ngrese la fila a eliminarI9 pos 3 Console.eadLine filaeg 3 ds.&ables8:9.oBs8Pos9 filaeg.!elete89 Case conn.*pen89 !im cbd As +eB SqlCommand=uilder 8da9
da.pdate8ds7 IalumnosI9 conn.Close89 #nd Select
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 58/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -458-
Loop ntil *pcion 3 E Catc> e; As Sql#;ception Console.riteLine8e;9 ,inally conn.Close89 Console.riteLine8IConneccion cerrada.I9
#nd &ry Console.eadLine89 #nd Sub#nd Module
TAREACrea una base de datos minimo J tablas y practique las Sentancias sqlLas sentencias sql puede practicar con#2C#L 7Accees 7SQL S#5# R::7Derramienta de visual basic R:?RCon visual =AS1C R:?R modo consola forma conectada y desconectadaCon visual basic R:?R modo formulario
Se tiene una base alumnos llamado empresa que tiene una tabla llamada traba$adoresque tiene la Siguiente estructura
Pre$uta%Listar los funcionariosS#L#C& @ ,*M &A=AUA!*#S D## &1P* 3 J
Promedio de sueldo por se;oPromedio de sueldo por tipoCual es el traba$ador mas antiguo
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 59/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -459-
Elaorar u !ro$ra#a e #o"o co%ola @ue ote$a lo% %i$uiete% "ato%a9 Cantidad de traba$adores por cada tiposb9 !atos del traba$ador que gana masc9 #laborar J listados uno de cada tipod9 !ado el c6digo del traba$ador que me muestre los dato de ese registro
e9 ,iltrar por nombreOteer lo% %i$uiete% "ato% !ero co co"i$o
Practica -PROCEDIMIENTOS ALMACENADOS<o!cioal?Crear un procedimiento almacenado con visual estudio R::G y e$ecutarloCrear y e$ecutar procedimientos almacenados con SQLserver R::Mostrar definiciones de procedimientos almacenados.Procedimientos con Par<metros de Salida y 5alor de etorno
&raba$ar con procedimientos almacenados en 5=.+#&.CONOCIENDO A ADO.NET.&raba$ar con el proveedor de datos SQL Server Listar la tabla alumnos usando proveedor de datos SQLServer Listar la tabla alumnos usando proveedor de datos *L#!=Listar la tabla alumnos usando proveedor de datos *!=CACIENDO CONEIONES escribir un programa muy simple7 para abrir y comprobar una cone;i6n%Mostrar informaci6n de cone;i6n.Conectar a SQL Server #;press con el proveedor de datos *L# !=.
E7ECUTANDO COMANDOSCrear un comando con un Constructor. Asociar un comando con una cone;i6n.Configuraci6n de la propiedad de cone;i6n. Asignaci6n de te;to a un comando.Configuraci6n de la propiedad Command&e;t.#$ecuci6n de comandosMetodos de e$ecuci6n de comandosobtener un solo valor e;ecute scalar #$ecutar comandos con varios resultados.#;ecuteeader89 la clase Sql!ataeader
#$ecutar sentencias de modificaci6n de datos m'todo #;ecute+onQuery.so de par<metros de comandoUSANDO DATA READERS
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 60/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -460-
Mostrar un campo 7 varios campos7etc de una tablatilizando los indizadores ordinales.so de columnas inde;ado por nombretilizando los m'todos de descriptor de acceso con tipo.*btener datos sobre datos.*btener datos acerca de las tablas.
*btener informaci6n de esquema.tilizar el resultado de varios con$untos con un lector de datos. +e;t result
USANDO DATASET F DATAADAPTERS < ORMA DESCONECTADA?
!atasets vs.!ata eaders. 8 lectores de datos y con$untos de datos9na breve introducci6n a las tablas de datos7 columnas de datos y filas de datos.Llenar un !ataset con un adaptador de datos#$emplo de for eac> y for ne;t#$emplo mostrar el elemento de la fila y columna determinada
Mostrar todas las tablasfiltrando y ordenando din<micamente datos en un !ataset.sando vistas de datos.Propiedad pdateCommand.Propiedad 1nsertCommandPropiedad !eleteCommand.Constructores de comando. SqlCommand=uilder.&ablas de datos sin con$untos de datos.tilizando con$untos de datos y 2ML.#;tracci6n de un con$unto de datos a un arc>ivo 2MLellenar una tabla de datos con un adaptador de datosso de for eac>Menu de mantenimiento de base de datos alumnos modo conectadoMenu de mantenimiento de base de datos alumnos modo desconectado#U#CC1*+ !# C*+SL&AS #+ M*!* C*+S*LA*btener datos con c6digo#$emplo sumar los montos e7tc de los traba$adores
ELABORAR UNA APLICACIN EN MODO ORMULARIOQue realice las siguientes acciones
?. Cargar a una tabla de base de datos un arc>ivo de te;to >ec>o en e;cel
R. #n un cuadro de lista cargar todas las tablas que contiene la base de datos pruebe con labase de datos alumnosJ. Al >acer clic en el el nombre de la tabla debe mostrar los valore de la tabla. Al >ace clic en el buton matriculado por curso debe listar todos los codigos de los cursos
. Al >ace cli en el el boton grabar matriculados generar el sigueinte informe ene;cel
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 61/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -461-
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 62/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -462-
1mports System.1*Module ModuleR Public Const ma;filas 3 ?:7 ma;col 3 ?: Public A8ma;filas7 ma;col9 As String Public nf As 1nteger 3 Public nc As 1nteger 3 J Public nombreArc>ivo As String Sub ecuperarMatriz8=y5al nombrearc>ivo As String7 =yef A879 As String7 =yef nf As1nteger 7 =y5al nc As 1nteger 9 !im srLector As Streameader
srLector 3 +eB Streameader8nombrearc>ivo9 !im fila As 1nteger 3 :7 col As 1nteger !im cadena As String 3 II !im subcadena As String !im pos As 1nteger 3 : !im inicio As 1nteger 3 ? cadena 3 srLector.eadLine89 !o >ile +ot 8cadena 1s +ot>ing9 cadena 3 cadena O C>r89 inicio 3 ? ,or col 3 : &o nc F ?
pos 3 1nStr8inicio7 cadena7 C>r899 subcadena 3 Mid8cadena7 inicio7 pos F inicio9 A8fila7 col9 3 subcadena inicio 3 pos W ? +e;t fila 3 fila W ? cadena 3 srLector.eadLine89 Loop nf 3 fila Console.riteLine8IArc>ivo K: leido satisfactoriamenteI7 nombrearc>ivo9 srLector.Close89
#nd Sub#nd Module
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 63/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -463-
CODIGO DEL ORMULARIO
1mports System.1*1mports System.!ata.SqlClientPublic Class ,orm? !im consulta As String
!im consultaR As String !im dst As +eB !ataSet !im dstR As +eB !ataSet !im fila As 1nteger !im CadenaCone;ion As String 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!atos?)ALM+*S.mdf1ntegratedSecurity3&rueConnect &imeout3J:I !im con As +eB SqlConnection8CadenaCone;ion9 !im dap? As +eB Sql!ataAdapter8II7 con9 !im dapR As +eB Sql!ataAdapter8II7 con9 !im 1ndice As 1nteger
!im CodCurso As String !im +ombre As String !im +ombrecurso As String !im _ As 1nteger Private Sub CargarArc>ivo&oolStripMenu1tem0Clic8=y5al sender As *b$ect7 =y5al e As #ventArgs9 Dandles CargarArc>ivo&oolStripMenu1tem.Clic *pen,ile!ialog?.S>oB!ialog89 nombreArc>ivo 3 *pen,ile!ialog?.,ile+ame ecuperarMatriz8nombreArc>ivo7 A7 nf7 nc9 !ata"rid5ieB?.ColumnCount 3 nc !ata"rid5ieB?.oBCount 3 nf MostrarMatriz8A7 nf7 nc9 #nd Sub Sub MostrarMatriz8=yef A879 As String7 =yef nf As 1nteger 7 =y5al nc As 1nteger 9 ,or fila 3 : &o nf F ? ,or col 3 : &o nc F ? 1f A8fila7 col9 3 C>r89 &>en Continue ,or !ata"rid5ieB?.oBs8fila9.Cells8col9.5alue 3 A8fila7 col9 +e;t +e;t #nd Sub
Private Sub ,orm?0Load8=y5al sender As *b$ect7 =y5al e As #ventArgs9 Dandles My=ase.Load #M XX X@FFLa consulta muestra todas las tablas de la base de datos@X
consulta 3 Iselect name from sysob$ects B>ere type344I dap?.SelectCommand.Command&e;t 3 consulta dap?.,ill8dst7 IC*+SL&AI9 ,or fila 3 : &o dst.&ables8:9.oBs.Count F ? List=o;?.1tems.Add8dst.&ables8:9.oBs8fila9.1tem8:99 +e;t #nd Sub
Private Sub List=o;?0Selected1nde;C>anged8=y5al sender As *b$ect7 =y5al e As #ventArgs9 Dandles List=o;?.Selected1nde;C>anged
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 64/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -464-
dst.&ables.Clear89 indice 3 List=o;?.Selected1nde; nombre 3 List=o;?.1tems8indice9 &e;t=o;?.&e;t 3 nombre consulta 3 I select @ from I O nombre dap?.SelectCommand.Command&e;t 3 consulta
dap?.,ill8dst7 IC*+SL&AI9 !ata"rid5ieB?.!ataSource 3 dst.&ables8:9 #nd Sub
Private Sub =utton?0Clic8=y5al sender As *b$ect7 =y5al e As #ventArgs9 Dandles btnSQL.Clic &ry consulta 3 &e;t=o;?.&e;t dst.&ables.Clear89 !ata"rid5ieB?.Columns.Clear89 dap?.SelectCommand.Command&e;t 3 consulta
dap?.,ill8dst7 IC*+SL&AI9 !ata"rid5ieB?.!ataSource 3 dst.&ables8:9 Catc> #2 As Sql#;ception Msg=o;8#29 #nd &ry #nd Sub
Private Sub =uttonR0Clic8=y5al sender As *b$ect7 =y5al e As #ventArgs9 Dandles btnMatriculadosPorCurso.Clic List=o;R.1tems.Clear89 dst.&ables.Clear89 !ata"rid5ieB?.Columns.Clear89 consulta 3 IS#L#C& !1S&1+C& C*!CS* ,*M PA"*SI dap?.SelectCommand.Command&e;t 3 consulta dap?.,ill8dst7 IC*+SL&AI9 ,or fila 3 : &o dst.&ables8:9.oBs.Count F ? List=o;R.1tems.Add8dst.&ables8:9.oBs8fila9.1tem8:99 +e;t #nd Sub
Private Sub List=o;R0Selected1nde;C>anged8=y5al sender As *b$ect7 =y5al e As
#ventArgs9 Dandles List=o;R.Selected1nde;C>anged dst.&ables.Clear89 !ata"rid5ieB?.Columns.Clear89 indice 3 List=o;R.Selected1nde; CodCurso 3 List=o;R.1tems81ndice9 &e;t=o;?.&e;t 3 C*!CS* consulta 3 I select @ from pagos B>ere codcurso lie 4I O CodCurso O I4I dap?.SelectCommand.Command&e;t 3 consulta dap?.,ill8dst7 IC*+SL&AI9 !ata"rid5ieB?.!ataSource 3 dst.&ables8:9 #nd Sub
Private Sub btn"rabarMatriculados0Clic8=y5al sender As *b$ect7 =y5al e As #ventArgs9 Dandles btn"rabarMatriculados.Clic
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 65/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -465-
Save,ile!ialog?.S>oB!ialog89 !im +ombreArc>ivo As String 3 Save,ile!ialog?.,ile+ame !im #scritor As +eB Streamriter8+ombreArc>ivo9 !ata"rid5ieB?.Columns.Clear89 ,or _ 3 : &o List=o;R.1tems.Count F ? dst.&ables.Clear89
dstR.&ables.Clear89 CodCurso 3 List=o;R.1tems8_9 &e;t=o;?.&e;t 3 CodCurso consulta 3 I select @ from pagos B>ere codcurso lie 4I O CodCurso O I4I dap?.SelectCommand.Command&e;t 3 consulta dap?.,ill8dst7 IC*+SL&AI9 !ata"rid5ieB?.!ataSource 3 dst.&ables8:9 consultaR 3 I select nombrecurso from cursos B>ere codcurso 3 4I O CodCurso O I4I dapR.SelectCommand.Command&e;t 3 consultaR dapR.,ill8dstR7 IC*+SL&A?I9 +ombrecurso 3 dstR.&ables8IC*+SL&A?I9.oBs8:9.1tem8:9
&e;t=o;?.&e;t 3 +ombrecurso #scritor.riteLine8IK:K?KRI7 CodCurso7 C>r897 +ombrecurso9 ,or col 3 : &o dst.&ables8:9.Columns.Count F ? #scritor.rite8IK:K?I7 dst.&ables8:9.Columns8col9.Column+ame7 C>r899 +e;t #scritor.riteLine89 ,or fila 3 : &o dst.&ables8:9.oBs.Count F ? ,or col 3 : &o dst.&ables8:9.Columns.Count F ? #scritor.rite8IK:K?I7 dst.&ables8:9.oBs8fila9.1tem8col97 C>r899 +e;t #scritor.riteLine89 +e;t #scritor.riteLine89 +e;t #scritor.Close89 #nd Sub#nd Class
Pruee co la a%e "e "ato% ort5".#"+
!im CadenaCone;ion As String 3 I!ataSource38Local!=9)v??.:Attac>!b,ilename3#%)!A&*S)nort>Bnd.mdf1ntegrated
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 66/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -466-
Security3&rueConnect &imeout3J:I
Como eliminar base de datos del servidor con SqlServer
CAPITULO 6 USANDO PROCEDIMIENTOS ALMACENADOS
E.? C#A P*C#!1M1#+&*S ALMAC#+A!*S C*+ LA =AS# !# !A&*S ALM+*SJYE.?.? Procedimientos con Par<metros de Salida y 5alor de etorno JGJE.?.R Mostrar definiciones de procedimientos almacenados. JG
E.?.J Cambiar el nombre de procedimientos almacenados. JGE. ?F&raba$ar con procedimientos almacenados en 5=.+#&.E.?. Procedimientos almacenados con par<metros ?GYE.?.E #U#MPL*! # procedimiento almacenamiento en sistema de centasCrear la tabla y agregar porcediietno7 etcE.?.Y A!*.+#& 8 de iipedia9 JGEE.?.G&raba$ar con el proveedor de datos SQL Server J:E.?. Mostrar informaci6n de cone;i6n. J: E.?.?:Conectar a SQL Server #;press con *le!bConnection. 8 cambio que se debe>acer9 JRE.R CAP1&L* ?? #U#C&A+!* C*MA+!*S JR
E.R.? Creando un comandoE.R.R Configuraci6n de la propiedad Command&e;t.8 Asignaci6n de te;to a un comando.9E.R.J#$ecuci6n de comandos. JRE.R.tilizando el m'todo #;ecuteScalar 8 retorna un solo valor9.JJE.J CAP1&L* ?R SA+!* !A&A #A!#S JE.J.?Comprender los lectores de datos en "eneral.E.J.R tilizando el m'todo #;ecuteeader. J
tilizando los indizadores ordinales. J so de columnas inde;ado por nombretilizando los m'todos de descriptor de acceso con tipo. J
E.J.J *btener datos sobre datos. J*btener datos acerca de las tablas. :?*btener informaci6n de esquema. :Y
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 67/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -467-
E.J.tilizar el resultado de varios con$untos con un lector de datos. :RE. #$ecutar sentencias de modificaci6n de datos. m'todo #;ecute+onQuery. :J
?. 1nsertar un registro :J#liminar registros Modifique la consulta anterior la linea que esta con negrita conModificacion de registros :so de par<metros de comando 8adicional ver en el documento9 :
E. SA+!* !A&AS#& Z !A&AA!AP&#S 8 ,*MA !#SC*+#C&A!A9 :E..? na breve introducci6n a los adaptadores de datos.E..R na breve introducci6n a las tablas de datos7 columnas de datos y filas de datos.E..J Llenar un !ataset con un adaptador de datos :YE.. Mostrar todas las tablas o consultas :G
Puede tambi'n poblar el dataset de la siguiente maneraE.E #$emplo de for eac> y for ne;tE.Y ,iltrar y ordenar en un con$unto de datos. ?J
filtrando y ordenando din<micamente datos en un !ataset.
E.G M*!1,1CA !A&*S #+ + !A&AS#&E.G.?Modificar una tabla de datos en un !ataset.E.G.R Propagar cambios a un origen de datos.
Propiedad pdateCommand. ?GPropagaci6n de cambios de con$unto de datos a un origen de datos. AquH va a
E.G.J Propiedad 1nsertCommand. ?E.G. Propiedad !eleteCommand. ? E.G. Constructores de comando. ? E. tilizando con$untos de datos y 2ML. R:E.?: M#+ M*!* C*+#C&A!* RR
,* #ACD C*+ &#S &A=LAS
E.?? M#+ !# =AS# !# !A&*S #+ ,*MA !#SC*+#C&A!A R
E.?R &A#A RYPruebe con la base de datos nort>Bnd.mdf
1mports System.!ata.SqlClientModule Module? Sub Main89 !im conn As +eB SqlConnection conn.ConnectionString 3 0 I!ata Source38Local!=9)v??.: I 0 O IAttac>!b,ilename3#%)!A&*S)ALM+*S.mdfI 0 O I1ntegrated Security3&rueConnect &imeout3J:I conn.*pen89 !im cmd As SqlCommand 3 conn.CreateCommand89 cmd.Command&ype 3 Command&ype.StoredProcedure cmd.Command&e;t 3 IPA0Alumnos?RI
!im rdr As Sql!ataeader 3 cmd.#;ecuteeader89 !im ncampos 3 rdr.,ieldCount !im col As 1nteger
7/21/2019 PLSI2015A-6 ADONET
http://slidepdf.com/reader/full/plsi2015a-6-adonet 68/68
GUIA PRACTICAS SI2015A\6 ADO NET\Ismael Véliz Vilca -468-
>ile rdr.ead89 ,or col 3 : &o ncampos F ? Console.rite8IK: K? I7 rdr8col97 vb&ab9 +e;t Console.riteLine89 #nd >ile
Console.eadLine89 rdr.Close89 conn.Close89 #nd Sub#nd Module
1mports System.!ata.SqlClientModule Module? Sub Main89 !im conn As +eB SqlConnection conn.ConnectionString 3 0 I!ata Source38Local!=9)v??.: I 0 O IAttac>!b,ilename3#%)!A&*S)ALM+*S.mdfI 0 O I1ntegrated Security3&rueConnect &imeout3J:I conn.*pen89 !im cmd As SqlCommand 3 conn.CreateCommand89
cmd.Command&ype 3 Command&ype.&e;t cmd.Command&e;t 3 IS#L#C& C*!ALM+*7SM8M*+&*9 I 0 O I AS &*&AL ,*M PA"*S "*P =Z C*!ALM+* I !im rdr As Sql!ataeader 3 cmd.#;ecuteeader89 !im ncampos 3 rdr.,ieldCount !im col As 1nteger >ile rdr.ead89 ,or col 3 : &o ncampos F ? Console.rite8IK: K? I7 rdr8col97 vb&ab9 +e;t Console.riteLine89 #nd >ile Console.eadLine89 rdr.Close89 conn.Close89 #nd Sub#nd Module