PLSI2015A-6 ADONET

68
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 tarea repetidamente. 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 tabla alumnos  Aparece lo siguiente Modifique y Ponga pdate !ebe aparecer lo siguiente "rabe el procedimiento y se modifica a

description

adonet

Transcript of PLSI2015A-6 ADONET

Page 1: 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

Page 2: PLSI2015A-6 ADONET

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

Page 3: PLSI2015A-6 ADONET

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

Page 4: PLSI2015A-6 ADONET

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

Page 5: PLSI2015A-6 ADONET

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

Page 6: PLSI2015A-6 ADONET

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%

Page 7: PLSI2015A-6 ADONET

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

Page 8: PLSI2015A-6 ADONET

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*

Page 9: PLSI2015A-6 ADONET

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

Page 10: PLSI2015A-6 ADONET

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

Page 11: PLSI2015A-6 ADONET

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#+&#81dCliente 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

Page 12: PLSI2015A-6 ADONET

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

Page 13: PLSI2015A-6 ADONET

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#+&#81dcliente7nombre7Apellidos7direccion7telefono7dni9 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

Page 14: PLSI2015A-6 ADONET

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

Page 15: PLSI2015A-6 ADONET

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

Page 16: PLSI2015A-6 ADONET

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

Page 17: PLSI2015A-6 ADONET

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.

Page 18: PLSI2015A-6 ADONET

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.

Page 19: PLSI2015A-6 ADONET

7/21/2019 PLSI2015A-6 ADONET

http://slidepdf.com/reader/full/plsi2015a-6-adonet 19/68

Page 20: PLSI2015A-6 ADONET

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

Page 21: PLSI2015A-6 ADONET

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

Page 22: PLSI2015A-6 ADONET

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?.

Page 23: PLSI2015A-6 ADONET

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

Page 24: PLSI2015A-6 ADONET

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

Page 25: PLSI2015A-6 ADONET

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

Page 26: PLSI2015A-6 ADONET

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

Page 27: PLSI2015A-6 ADONET

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

Page 28: PLSI2015A-6 ADONET

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.

Page 29: PLSI2015A-6 ADONET

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

Page 30: PLSI2015A-6 ADONET

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

Page 31: PLSI2015A-6 ADONET

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

Page 32: PLSI2015A-6 ADONET

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

Page 33: PLSI2015A-6 ADONET

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

Page 34: PLSI2015A-6 ADONET

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

Page 35: PLSI2015A-6 ADONET

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.

Page 36: PLSI2015A-6 ADONET

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.

Page 37: PLSI2015A-6 ADONET

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

Page 38: PLSI2015A-6 ADONET

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%

Page 39: PLSI2015A-6 ADONET

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 ?

Page 40: PLSI2015A-6 ADONET

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 -

Page 41: PLSI2015A-6 ADONET

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

Page 42: PLSI2015A-6 ADONET

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

Page 43: PLSI2015A-6 ADONET

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

Page 44: PLSI2015A-6 ADONET

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 

Page 45: PLSI2015A-6 ADONET

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

Page 46: PLSI2015A-6 ADONET

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 ?

Page 47: PLSI2015A-6 ADONET

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

Page 48: PLSI2015A-6 ADONET

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".

Page 49: PLSI2015A-6 ADONET

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&#7 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 

Page 50: PLSI2015A-6 ADONET

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

Page 51: PLSI2015A-6 ADONET

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?

Page 52: PLSI2015A-6 ADONET

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<?

Page 53: PLSI2015A-6 ADONET

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

Page 54: PLSI2015A-6 ADONET

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

Page 55: PLSI2015A-6 ADONET

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

Page 56: PLSI2015A-6 ADONET

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 

Page 57: PLSI2015A-6 ADONET

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

Page 58: PLSI2015A-6 ADONET

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

Page 59: PLSI2015A-6 ADONET

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

Page 60: PLSI2015A-6 ADONET

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

Page 61: PLSI2015A-6 ADONET

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-

Page 62: PLSI2015A-6 ADONET

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

Page 63: PLSI2015A-6 ADONET

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

Page 64: PLSI2015A-6 ADONET

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

Page 65: PLSI2015A-6 ADONET

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

Page 66: PLSI2015A-6 ADONET

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

Page 67: PLSI2015A-6 ADONET

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 

Page 68: PLSI2015A-6 ADONET

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