bases de datos en sitios web

18
Bases de datos en sitios web http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03] Upload Browse Go PRO Login Signup Anuncios Google Sitios Web Hacer Una Web Bases De Datos Diseño Paginas Web Email Favorite Save Flag Embed /35 Bases de datos en sitios web by rulo182 on Mar 20, 2011 847 views Bases de datos en sitios web con More… + Follow No comments yet Subscribe to comments Post Comment Trabajar con bases de datos desde ASP.NET 21124 views Manual de worl,excel,access y power point 2402 views Manual multimedia y web 2.0 6354 views Servidor de prueba wamp 2143 views CREACION DE DLL Y USO (Ejemplo desarrollado) 1506 views Iv calculando graficando_hoja_calculo_calc 700 views Manual del programador cap 16 al 18 1068 views Trabajo de acces 172 views Presen de acces 92 views Presentacion de acces 101 views Related More

Upload: erhard07

Post on 08-Jul-2015

282 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

Upload Browse Go PRO Login Signup

Anuncios Google Sitios Web Hacer Una Web Bases De Datos Diseño Paginas Web

Email Favorite Save Flag Embed

/35

Bases de datos en sitios webby rulo182 on Mar 20, 2011

847views

Bases de datos en sitios web con

More…

+ Follow

No comments yet

Subscribe tocomments

Post Comment

Trabajar con bases de datosdesde ASP.NET21124 views

Manual de worl,excel,access ypower point2402 views

Manual multimedia y web 2.06354 views

Servidor de prueba wamp2143 views

CREACION DE DLL Y USO(Ejemplo desarrollado)1506 views

Iv calculandograficando_hoja_calculo_calc700 views

Manual del programador cap 16al 181068 views

Trabajo de acces172 views

Presen de acces92 views

Presentacion de acces101 views

Related More

Page 2: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

1. IntroducciónEn esta primera parte del tutorial de cómo utilizar bases de

datos en un sitio Webusando Visual Web Developer 2005 Express, vas a ver

cómo crear un proyectoWeb, crear una base de datos de SQL Server 2005

desde el IDE del Visual WebDeveloper (VWD), añadir controles a una página

Web ASPX, añadir controles devalidación, comprobar si un usuario ya está

en la base de datos, y en caso de queno esté, añadirlo. Nota: El código

mostrado aquí es para Visual Basic 2005, pero más abajo tienes los links

para el código completo, tanto para Visual Basic como para C#.Ejemplo paso

a paso • 0- Abre el Visual Studio 2005 (o el Visual Web Developer 2005

Express) • 1- Crea un nuevo proyecto ASP.NET (vwdTut01) • 1.a- Elege el

lenguaje a usar para el código de forma predeterminada • 2- Añade un

nuevo elemento • 2.a- Elige Base de datos de SQL Server y dale el nombre

vwdTut01.mdf • 2.b- Nos avisa de que la base de datos debe estar en la

carpeta App_Data, acepta • 3- Crea una tabla (debes mostrar la ficha

Explorador de bases de datos) • 3.a- Usa estos campos: o 3.b- ID, int,

Identidad o 3.c- Correo, nvarchar(64) o 3.d- Clave, nvarchar(40) o 3.e-

Nombre, nvarchar(50) o 3.f- Fecha, datetime o 3.g- Comentarios,

nvarchar(300)

2. • 3.h- Dale a guardar y ponle el nombre Usuarios• 4- Ahora te explico

cómo crear el formulario de introducción de datos.• 4.a- En el menú Sitio

Web selecciona Agregar nuevo elemento• 4.b- Selecciona WebForms y dale

el nombre AgregarUsuario.aspx• 4.c- El lenguaje será el indicado al principio,

pero lo puedes cambiar (yo dejo Visual Basic)• 4.d- Marca la casilla Colocar

el código en un archivo independiente para que se separe el diseño del

formulario del código que vamos a escribir.• 5- Ahora vamos a añadir una

tabla, para que queden alineado los textos y las cajas de textos• 5.a- En el

menú Diseño seleccionar Insertar tabla• 5.b- En el cuadro de diálogo de

insertar tabla, selecciona: 3 filas y 2 columnas, ancho 90%, Alinear: center,

Atributos: borde: 1, Espaciado celdas: 4• 6- En la tabla recién creada, añade

una etiqueta en la primera columna, un textBox en la segunda columna• 7-

Queremos que estén alineadas a la izquierda y arriba• 7.a- Selecciona la

celda (pulsando en la flecha que sale al pasar el ratón)• 7.b- En la ventana

de propiedades, en align selecciona left y en VAlign selecciona top• 8-

Selecciona esa fila y pulsa en Copiar de la barra de herramientas• 8.a-

Ahora, al pulsar en el botón Pegar y se añadirá una nueva fila con los

controles• 8.b- Selecciona la siguiente fila (la vacía) y pulsa en pegar• 8.c-

Repite los pasos anteriores hasta que tengas 4 filas con los controles• 9-

Añade un botón en la siguiente fila• 9.a- Selecciona la fila del botón

Bases de datos en sitios webDocument Transcript

Trabajo de acces432 views

Microsoft office 2007436 views

Google docs2855 views

Manual basico de manejo deaccess964 views

Manual1288 views

Fundamentos vb1901 views

Practica387 views

19335 views

Alcor grd manual-usuario383 views

Spss guia breve988 views

Precauciones al usar_internet

Lenguajes de programación

Introducción a los algoritmos

Principios de programacion

Diseño de bases de datos

Administracion de proyectos

Page 3: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

3. • 9.b- En el menú Diseño selecciona Combinar celda• 9.c- De esa forma,

esa columna ocupará toda la fila• 10- En la última fila, añade una etiqueta•

10.a- Selecciona esa última fila para que ocupe las dos columnas, ya sabes:•

10.b- En el menú Diseño, selecciona Combinar celda• 11- Selecciona esa

etiqueta y en la ventana de propiedades busca la propiedad Width y escribe

100% para que ocupe todo el ancho.• 12- Cambia el texto de las 4 primeras

etiquetas para que muestre: Correo, Clave, Nombre y Comentarios• 13-

Como puede ser que no interese que se vea la clave escrita, selecciona la

segunda caja de textos• 13.a- En la ventana de propiedades, en la propiedad

TextMode selecciona Password• 14- Selecciona la última caja de textos, te

digo lo que hay que hacer para que tenga más espacio para escribir• 14.a-

En la ventana de propiedades, en la propiedad TextMode selecciona

Multiline• 14.b- En la propiedad Rows escribe 4 y en Columns escribe 60•

15- Selecciona el botón y en el texto escribe Nuevo usuario• 16- Lo correcto

es que los controles tengan nombres que indiquen para que son• 16.a-

Siguiendo el orden de arriba abajo, a las cajas de texto dale estos nombres:

o 16.b- txtCorreo, txtClave, txtNombre y txtComentarios

4. • 17- Al botón dale el nombre btnNuevo• 18- A la etiqueta del final, dale el

nombre lblAviso, el resto déjalas con el nombre que tienen ya que no las

usaremos desde el código y da igual el nombre, pero si quieres, le puedes

dar el nombre que te apetezca, aunque ya puestos, podría ser como el de la

caja de textos que tienen al lado, pero en lugar de txt puedes usar lbl.• 19-

Ahora vamos a darle funcionalidad al botón, de forma que al pulsar en él se

cree un nuevo usuario con los datos que tenemos• 19.a- Como queremos

que las cosas se hagan bien, después añadiremos validadores para que se

escriba lo que haya que escribir• 19.b- Haz dobleclic en el botón para que se

muestre la ventana de código• 19.c- El código se habrá mostrado en un

fichero aparte con el mismo nombre que la página y con la extensión del

lenguaje que has elegido, en mi caso es: AgregarUsuario.aspx.vb• 19.d-

Antes de hacer nada te explico que es lo que habría que hacer para añadir

correctamente los datos.• 20- No debemos admitir ninguna de las cajas en

blanco, salvo la de comentarios (ahora veremos como)• 21- La fecha la

podremos nosotros de forma automática, para que tenga la fecha actual•

21.a- Para que se muestre la fecha, deberíamos agregar una nueva fila, por

ejemplo, entre el nombre y los comentarios• 21.b- Selecciona la fila del

nombre y pulsa en copiar• 21.c- Selecciona la fila de los comentarios y pulsa

en pegar, se insertara una nueva fila• 21.d- Cambia el texto de la etiqueta a

Fecha y el nombre de la caja de textos a txtFecha• 21.e- Como la fecha es

de solo lectura, selecciona la caja de textos y en las propiedades, asigna el

valor True a la propiedad ReadOnly

5. • 21.f- Para que se vea de otro color, en las propiedades, selecciona

BackColor y en el cuadro de propiedades que te muestra, selecciona la ficha

Web y el color WhiteSmoke• 22- Otra cosa a hacer es que si ese correo ya

existe, que diga que no es válido• 23- Pero antes de hacer nada,

Manual de instalacion de unsegundo sist. operativo [19paginas en español]

Arquitectura del computador

Windows NT

Las computadoras portatiles

Redes y telefonia

Arquitectura servidores

Configuraciones del hardware

Page 4: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

necesitamos crear la conexión a la base de datos• 24- Con el Visual Web

Developer Express y el SQL Express la forma mas fácil de crear una

conexión a la base que hemos creado es haciendo lo siguiente: (a lo mejor

hay otra forma mejor, pero... esto me funciona siempre)• 24.a- Muestra la

página de agregar usuario en modo diseño• 24.b- En el explorador de bases

de datos, arrastra la tabla de Usuarios a la página• 24.c- Esto creará un

GridView y un control DataSource, el GridView lo vamos a borrar• 24.d-

Selecciona solo el GridView y pulsa la tecla suprimir, pulsa antes en

cualquier parte de la página y después selecciona el grid• 24.e- Ahora

tendrás un control llamado SqlDataSource1 que tendrá todos los comandos

para insertar, eliminar, actualizar, etc.• 24.f- También se habrá creado el

fichero web.config con los datos de conexión a la base de datos• 25- Vamos

a añadir controles de validación para que el usuario tenga que escribir algo

en ellos• 25.a- Muestra la página en modo de diseño y del Cuadro de

herramientas, selecciona el grupo Validación• 25.b- Arrastra un control

RequiredFieldValidator y déjalo al lado del textBox del correo

6. • 25.c- Seguramente se pondrá debajo de la caja de textos, posiciónate

justo delante del control de validación y borra (con la tecla backspace) el

espacio que habrá, para que quede pegado al textBox, después puedes

pulsar un espacio para que haya algo de separación• 25.d- Añade otro al

lado de la caja de textos de la clave y otro al lado del textBox del nombre•

25.e- Para la fecha y los comentarios no hace falta añadir ninguno• 26-

Como queremos que la cuenta de correos sea valida, vamos a añadir un

control de validación de expresiones regulares junto al textBox del correo

(detrás del validador que ya había)• 26.a- En la ventana de propiedades,

selecciona la propiedad ValidationExpression y pulsa en el botón• 26.b- Del

cuadro de dialogo selecciona Dirección de correo electrónico de Internet y

pulsa en aceptar• 27- Ahora vamos a enlazar esos controles de validación

con las cajas de texto correspondientes• 27.a- Selecciona el primer

RequiredFieldValidator (Correo) y busca la propiedad ControlToValidate y de

la lista desplegable que te mostrará, selecciona txtCorreo• 27.b- Haz lo

mismo con el control RegularExpressionValidator (el de la expresiones

regulares)• 27.c- Ahora el de la clave y después el del nombre,

seleccionando los controles correspondientes en la propiedad

ControlToValidate• 27.d- Puedes cambiar el mensaje de aviso de cada uno

de los controles de validación, con idea de que si, por ejemplo, no se escribe

nada en la clave diga que debe escribir algo... La propiedad que debes

asignar es ErrorMessage.• 28- Si queremos que la clave tenga un mínimo de

caracteres, podemos agregar un control CustomValidator, indica que control

se debe validar,

7. escribe el texto del mensaje de error, por ejemplo: Debes escribir más de

5 caracteres• 28.a- Haz dobleclic en el control de validación y en el evento

que se crea en el fichero de código, escribe lo siguiente: (args es el nombre

del segundo parámetro)args.IsValid = (args.Value.Length > 5)• 28.b - Esto

hará que se compruebe que no este vacío y que tenga más de 5 caracteres•

29- Si en lugar de hacer la validación en el servidor, quieres hacerla en el

lado del cliente, tendrás que crear un código Script en la pagina con este

código:<script type="text/javascript">function comprobarClave(oSrc, args){

args.IsValid = (args.Value.length > 5);}</script>• 29.a- Selecciona el control y

Page 5: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

en la propiedad ClientValidationFunction escribe el nombre de la función, en

este caso comprobarClave.• 30- Como los controles de validación se

empeñan en ponerse como les da la gana, si quieres, puedes poner todos

esos controles de validación en la parte inferior de la tabla, aunque en el

caso de que, por ejemplo, el usuario pulse en el botón sin haber escrito

nada, le mostrará todos los mensajes de error, por tanto, esos mensajes

deberían decir lo que queremos que haga el usuario, es decir, no lo dejes

con el texto predeterminado.• 31- Antes de seguir, decirte que si la caja de

textos está en modo Password, y cuando se compruebe por código si el

usuario existe, etc., y se cancele la creación del usuario, lo que se escriba se

borrará, así que si quieres que se siga manteniendo la contraseña, debes

dejarla como texto

8. normal. En cualquier caso, mejor dejarlo como Password y si el usuario se

equivoca, pues... que hubiese prestado más atención, je, je.• 32- Ahora

vamos a escribir el código de validación de que el usuario no exista ya y en

caso de que exista, que se cancele la inserción de datos, y si no existe, que

se añada a la base de datos.• 32.a- Muestra el código del evento del botón

(el que creaste en el punto 19)• 32.b- Al principio del fichero añade las

importaciones de los espacios de nombres que vamos a usar, en particular el

System.Data.SqlClient• 32.c- Lo primero es comprobar si el usuario ya existe,

por tanto vamos a ejecutar la siguiente sentencia (cadena de

selección):SELECT Count(*) FROM Usuarios WHERE Correo = @Correo•

32.d- Esto hará que se compruebe en la tabla de Usuarios si el correo

escrito ya está, el truco es que si esas instrucciones devuelven algún valor

que no sea cero, es que ya hay una cuenta de correo como la que

buscamos.• 32.e- Para ejecutar esa sentencia de SQL vamos a usar un

objeto SqlConnection y un objeto SqlCommand• 32.f- Para el objeto

Connection necesitas la cadena de conexión, y como ya tenemos en el

formulario (pagina Web) un objeto SqlDataSource, pues la tomamos de ahí.•

32.g- Este es el código para comprobar si el usuario ya existe, verás que

uso una instrucción Using para controlar la conexión, de esa forma, si nos

salimos nos aseguramos de que el objeto se destruye y se cierra la

conexión, ya que esa instrucción se encarga de liberar todos los recursos que

estuviera usando al llegar al final del bloque, en Visual Basic, será al llegar a

End Using. Comprobamos si el nombre ya existeUsing cnn As New

SqlConnection(Me.SqlDataSource1.ConnectionString) Dim cmd As New

SqlCommand( _ "SELECT Count(*) " & _

9. "FROM Usuarios " & _ "WHERE Correo = @Correo", cnn) Abrimos la

conexión cnn.Open() Añadimos el valor del parámetro de la consulta

cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text) Si devuelve algún

valor, es que ya existe Dim i As Integer i = CInt(cmd.ExecuteScalar()) If i > 0

Then Avisamos y salimos Me.lblAviso.Text = "El usuario ya existe" Exit Sub

End If Al salir del bloque Using se cierra la conexiónEnd Using• 32.h- El

parámetro @Correo lo asignamos usando el método AddWithValue que es la

forma más cómoda de crear los parámetros al tiempo que se le asigna el

valor que tendrá.• 32.i- Al llamar al método ExecuteScalar del comando, le

estamos diciendo que devuelva la primera columna de la primera fila, y

como resulta que lo que queremos es el número de veces que esté en la

tabla Usuarios esa cuenta de correo, pues si ya está una vez, devolverá un

Page 6: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

1, si no está devolverá un cero. El valor que devuelve esa función es de tipo

Object, ya que en realidad el tipo devuelto depende de lo que pongamos

después de SELECT, en este caso es un valor entero, que es lo que

devuelve la función Count(*).• 32.j- Si lo que devuelve es mayor de cero, es

que hay algún correo como el que se ha escrito, por tanto mostramos el

mensaje de error y salimos del método.• 33- Si se continúa, es decir, se llega

después del End Using, es que no existe esa cuenta de correo, por tanto

debemos agregar los datos.

10. • 33.a- Ahora debemos hacer casi lo mismo de antes, pero ejecutando el

comando Insert, el cual también lo tomaremos del objeto SqlDataSource1.•

33.b- Aunque antes de guardar nada en la base de datos debemos asignar

los valores de los parámetros, que si te fijas en el código de la página, esos

parámetros se llaman igual que los campos, pero empezando con la arroba

(@).• 33.c- Otra cosa que debemos hacer es convertir el password (la clave)

en un valor SHA1. Esto es para no guardar la clave como un texto en la

base de datos, de esa forma, el que vea los datos que hay no sabrá cual es

la clave de cada usuario. Ese valor SHA1 lo podemos crear usando un

objeto de tipo SHA1CryptoServiceProvider o bien usar la función

HashPasswordForStoringInConfigFile de la clase FormsAuthentication, que es

lo que normalmente haremos en una pagina Web, ya que así nos evitamos

tener que crear nuestro propio código. De todas formas, en el código

completo, he añadido la función para crear ese valor SHA1, por si quieres

ver como hacerlo, por ejemplo para una aplicación de Windows.• 33.d- Una

vez que tenemos todo esto, lo juntamos y lo mezclamos bien... je, je, mejor

es que veas el código para que lo tengas más claro: El usuario no existe, lo

añadimosUsing cnn As New

SqlConnection(Me.SqlDataSource1.ConnectionString) Usamos el comando

Insert del DataSource Dim cmd As New

SqlCommand(Me.SqlDataSource1.InsertCommand, cnn) Abrimos la conexión

cnn.Open() Añadimos el valor del parámetro de la consulta

cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text) La clave la

guardaremos como un valor SHA1 Dim clave As String clave

=FormsAuthentication.HashPasswordForStoringInConfigFile(txtClave.Text,"SHA1")

clave = generarClaveSHA1(txtClave.Text)

cmd.Parameters.AddWithValue("@Clave", clave)

11. La fecha a guardar es la actual txtFecha.Text = DateTime.Now.ToString()

cmd.Parameters.AddWithValue("@Fecha", txtFecha.Text)

cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text)

cmd.Parameters.AddWithValue("@Comentarios", txtComentarios.Text)

Ejecutamos el comando de inserción cmd.ExecuteNonQuery() Al salir del

bloque Using se cierra la conexiónEnd UsingMe.lblAviso.Text = "Se ha

añadido el nuevo usuario correctamente"• 34- Ya lo único que nos queda es

poner en la pagina principal (Default.aspx) un link para que podamos entrar a

la página de crear nuevos usuarios. En esa misma página crearemos links

para otras funcionalidades, por ejemplo, modificar un dato o ver los datos

que tenemos, etc.• 34.a- Muestra la página Default.aspx en modo diseño y

del Cuadro de herramientas añade un control HyperLink, en la propiedad

Text escribe Añadir usuario y en la propiedad NavigateUrl pulsa en el botón

con los puntos suspensivos para que puedas seleccionar la página a la que

Page 7: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

quieres que navegue cuando se pulse en el link, en este caso la página que

debes seleccionar del cuadro de diálogo que te muestra es

AgregarUsuario.aspx• 35- Vamos a probar que todo funciona, pero antes, en

el explorador de soluciones, selecciona la página Default.aspx y pulsando

con el botón derecho, selecciona del menú contextual la opción Establecer

como página de inicio, de esta forma, cada vez que pulses F5 se iniciara con

esa página, si no haces esto que te acabo de comentar, cuando pulses F5 se

iniciara por la página que en ese momento esté seleccionada.• 36- Una vez

que esté en ejecución, prueba a no escribir nada en las cajas de texto y

pulsa en el botón, verás que salen los mensajes de aviso. Sigue haciendo

pruebas de validación, por ejemplo no escribas bien el correo,

12. escribe menos de 6 caracteres en la clave, etc. • 37- Una vez que hayas

probado que las validaciones funcionan, introduce un usuario (o varios) y

después intenta introducir uno que ya exista, para que veas que se muestra

el mensaje de error y esas cosas.Bueno, pues con esto ya tienes para

entretenerte un rato.En la próxima parte veremos cómo modificar los datos y

cómo mostrar los quehay.Esto último lo haremos de forma automática,

usando un GridView y de formamanual, para que podamos navegar entre los

datos y se muestren uno a uno, etc.IntroducciónEn esta segunda parte del

tutorial de cómo utilizar bases de datos en un sitio Webusando Visual Web

Developer 2005 Express, te explicaré cómo mostrar en uncontrol GridView

todos los datos que tenga la tabla de usuarios. Cuando hayamuchos datos,

será conveniente que se muestren poco a poco, aquí te explicocómo paginar

los datos en el control, además de permitir la clasificación por losdistintos

campos que se muestran. Nota: Como este ejemplo no necesita ni una sola

línea de código, solo te muestro lo que hay aquí, pero verás que es muy fácil

de crear la página para que muestre los datos en el GridView y que no hace

falta que te muestre nada más.Estos son los pasos para completar esta

segundaparte del tutorial: • 1- Abre el proyecto que creamos en la parte

anterior: vwdTut01. • 2- Añade una nueva página: • 2.a- En el menú Sitio

Web selecciona Agregar nuevo elemento... • 2.b- Del cuadro de diálogo de

agregar nuevo elemento, selecciona WebForms y dale el nombre

MostrarUsuarios.aspx • 2.c- Como en este primer caso no vamos a escribir ni

una línea de código, si quieres, quita la casilla que hay junto a Colocar el

código en un archivo

13. independiente.• 3- Si ya le habías dado a Aceptar antes de terminar de

leer el punto anterior, puedes modificar el código interno de ese fichero para

que no use un fichero de código por separado.• 3.a- Muestra el fichero, y

pulsa en la ficha Código para que se muestre el código HTML de la página.•

3.b- En la parte superior, deja solo <%@ Page Language="VB" %> (si estás

usando C#, en vez de VB, pues pondrá C#)• 3.c- Elimina el fichero extra que

tendrá el mismo nombre de la página, pero con la extensión del lenguaje que

hayas elegido, por ejemplo, si has usado Visual Basic, ese fichero se llamará

MostrarUsuarios.aspx.vb• 3.d- Seguramente en la página .aspx habrá un

bloque para escribir el código:<script runat="server"></script>• 3.e- Puedes

borrarlo sin problemas.• 4- Ahora vamos a mostrar todos los datos que

tenemos de los usuarios• 4.a- Como seguramente te imaginarás, la forma de

hacerlo es como te mostré en el punto 24 de la parte anterior. Te lo explico

de nuevo para que no te líes... ;-)))• 4.b- Muestra la página

Page 8: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

MostrarUsuarios.aspx en modo de diseño.• 4.c- Del Explorador de bases de

datos selecciona la conexión vwdTut01.mdf y expándela• 4.d- De las Tablas,

selecciona la de Usuarios y arrástrala hasta la página (el formulario Web)•

4.e- Esto hará que se creen dos controles: un GridView y un SqlDataSource•

4.f- Déjalos tal como están, ahora los personalizaremos.

14. • 5- Haz que se muestre la página Default.aspx y que esté en modo de

diseño (si no está en modo diseño, ya sabes, pulsa en la ficha Diseño)• 5.a-

Es posible que para que se muestren los ficheros de nuestro sitio Web

tengas que pulsar en la ficha Explorador de soluciones, ya que en el Visual

Web Developer 2005 Express, la ficha del Explorador de bases de datos

suele estar en el mismo grupo de ventanas que el explorador de soluciones.•

6- Arrastra un control HyperLink a la página (se pondrá debajo del que ya

había)• 6.a- Selecciona ese control, y en la ventana de propiedades, asigna

la cadena Mostrar todos los usuarios a la propiedad Text• 6.b- En la

propiedad NavigateUrl tendrás que pulsar en el botoncito ese de los puntos

suspensivos para que te muestre las páginas disponibles y así poder elegir a

la que quieres que vaya cuando se pulse en ese link, en este caso, la página

MostrarUsuaurios.aspx• 7- Prueba que todo está bien, pulsa F5 para iniciar

la aplicación• 7.a- Si seguiste mis indicaciones del punto 35 de la primera

parte, se mostrará la página Default.aspx, si no se muestra esa página y se

muestra otra, ya sabes lo que tienes que hacer para que la página

Default.aspx sea la página de inicio.• 7.b- Recuerda que si no indicas la

página que se usará como inicio, al pulsar F5, la página que se mostrará

será la que en ese momento esté seleccionada... y de casualidad, puede que

sea Default.aspx, pero... para que siempre se inicie en esa página, sigue los

pasos esos que te indiqué antes.• 8- Pulsa en el link de Mostrar todos los

usuarios para ver todos los datos que tienes en la tabla de Usuarios.• 8.a-

Verás que se muestra todo, incluso el código SHA1 de las claves.• 9- Como

esa información no tiene ninguna utilidad, mejor la quitamos.

15. • 9.a- Para quitar la columna Clave lo podemos hacer de varias formas.•

9.b- Cierra la ventana del explorer y haz que se muestre la página

MostrarUsuarios.aspx en modo de diseño.• 10- Quitar columnas del

GridView, método 1: Modificando el origen de datos.• 10.a- Selecciona el

control GridView y pulsa en la flecha que tiene en la parte superior derecha

para que se muestre la ventana de Tareas de GridView.• 10.b- De las

opciones que te da, puedes elegir Configurar origen de datos... lo que hará

que te muestre el asistente del origen de datos.• 10.c- En la primera ventana,

pulsa en Siguiente (se supone que en la lista desplegable de las conexiones

estará seleccionada la que estamos usando: vwdTur01ConnectionString1).•

10.d- En la siguiente ventana te mostrará las columnas que estás usando,

quita la marca de la columna Clave (verás que el texto de la cadena usada

para seleccionar los datos ya no muestra el campo Clave) y pulsa en

Siguiente.• 10.e- En la siguiente pantalla pulsa en Finalizar.• 10.f- Te

mostrará un mensaje de advertencia diciéndote que si quieres eliminar los

campos del GridView bla, bla, bla. Dile que NO (es decir, pulsa en el botón

No).• 10.g- Si pulsas en el botón Si, parecerá que todo está bien, pero al

mostrar la ventana, (ejecutando la aplicación y mostrando todos los datos),

verás que no se ve nada.• 10.h- Esto es porque se eliminan las columnas del

control GridView, aunque el DataSource se configura de forma adecuada

Page 9: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

para que no incluya ese campo.• 10.i- Si lo que quieres es añadir una

columna que antes has eliminado (si te estuvieras quieto en vez de estar

jugueteando, no te pasaría esto, je, je), tendrás que decirle que sí en vez de

que no.• 10.j- Pero claro, si le dices que sí, se eliminan las columnas, así

que... ¡no verás los datos!

16. • 10.k- Si te ocurre eso de que no se ven lo datos, lo mejor es eliminar el

GridView y el SqlDataSource y volver a crearlo.• 11- Quitar columnas del

GridView, método 2: Editando las columnas• 11.a- Selecciona el GridView y

pulsa en la flecha de arriba...• 11.b- Pulsa en la opción Editar columnas...•

11.c- Te mostrará un cuadro de diálogo con las columnas de la tabla.• 11.d-

En la parte de abajo a la izquierda, selecciona la columna Clave y pulsa en

el botón con la X roja para borrarla.• 11.e- NO marques la casilla esa que

dice Generar campos automáticamente, ya que te mostrará dos veces las

columnas, además de que se incluirán todos los campos de la tabla (además

de los que ya estaban, por eso te digo lo de dos veces, que hay que

aclarártelo todo...)• 11.f- Pulsa en Aceptar para cerrar el cuadro de diálogo.•

11.g- Si pruebas, (F5 y esas cosas, ya sabes), verás que se muestran los

datos sin la clave, que es lo que queríamos.• 11.h- Si te fijas en el código de

la página, verás que en el DataSource sigue estando el campo Clave,

incluso en el comando Select, pero como no está "boundado" (¿existe ese

palabro? lo que el Guille quiere decir, es que no está vinculada

automáticamente ninguna columna del grid a ese campo) en las columnas

del GridView, pues no se verá.• 12- Quitar columnas del GridView, método 3:

Editando el código HTML generado (sin asistentes, así a lo bravo, je, je)•

12.a- Para modificar manualmente lo que se va a mostrar en el GridView,

debes mostrar el código HTML de la página MostrarUsuarios.aspx• 12.b- Si

estás en modo de diseño, pulsa en la ficha Código y ve a la parte en la que

está la etiqueta <Columns> del control GridView.• 12.c- Selecciona la fila en

la que está la definición de la columna que quieres quitar, es decir, la que

empieza con: <asp:BoundField DataField="Clave", y bórrala.• 12.d- Para que

veas que ya está lo que pretendíamos, pulsa F5 y muestra los datos.

17. • 12.e- Simple, ¿verdad? Pues eso...• 13- Como resulta que esta

ventana solo la vamos a usar para mostrar los datos, ¿para que necesitamos

los comandos de insertar, eliminar y demás? Así que, vamos a borrarlos.•

13.a- Esto lo puedes hacer de varias formas, por ejemplo modificando el

origen de datos, pero mejor es que elimines el código que se genera en la

página, así vamos a "tiro fijo" ;-)))• 13.b- Bueno, vale... ahora te explico cómo

hacerlo con el asistente... ¡es que no me puedo negar a lo que me pides! ;-

)))• 13.c- Para eliminar los comandos de forma manual, en el código de la

página, busca los comandos a borrar y... ¡bórralos!• 13.d- Las "instrucciones"

que debes borrar son: DeleteCommand, InsertCommand (que estará en la

misma línea del anterior) y por último UpdateCommand.• 13.c- También

tendrás que quitar los bloques de <InsertParameters>, <UpdateParameters>

y <DeleteParameters>, es decir, todo lo que esté entre esas etiquetas y las

correspondientes al cierre de las mismas, por ejemplo: desde

<DeleteParameters> hasta </DeleteParameters>, (sí, ya se que lo has

entendido, pero si no lo haces bien, al ejecutar te dará error y después

vendrás protestando de que te falla, je, je, sí, vale, ya se que tu te enteras,

pero...)• 13.d- OJO al borrar el DeleteCommand (el último antes de los

Page 10: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

parámetros), ya que suele tener el carácter > de cierre, y si lo borras, te dará

error y puede que no te fijes en que es lo que ocurre.• 14- Ahora vas a usar

el asistente de origen de datos para que solo se quede el comando Select.•

14.a- Si has estado haciendo lo que te comenté en el paso anterior, puedes

borrar el GridView y el SqlDataSource y agrega nuevamente la tabla de

Usuarios para que esté todo como en un principio.

18. • 14.b- Bien, si ya tienes otra vez todo como estaba originalmente (se

mostrará la columna Clave), haz que se muestre la página en modo de

diseño y pulsa en la flechita de arriba del control GridView. • 14.c- Pulsa en

la opción Configurar origen de datos... • 14.d- En la primera pantalla del

asistente, pulsa en Siguiente. • 14.e- Quita la marca de la casilla que hay

junto a Clave y pulsa en el botón Avanzadas... (el que está a la derecha del

panel con los campos). • 14.f- Del cuadro de diálogo que te muestra, quita la

marca de la opción Generar instrucciones Insert, Update y Delete y pulsa en

Aceptar. • 14.g- Pulsa en Siguiente y después en Finalizar, si te muestra el

aviso ese que te comenté en el punto 10, dile que NO. • 14.h- Si muestras el

código de la página verás que solo está el comando Select, pero que en los

campos enlazados está la clave, así que... borra esa línea (ver el punto 12).

• 14.i- Pulsa la tecla F5 para comprobar que todo está bien y no se muestra

el campo Clave.Mejorar el aspecto del GridView • 15- Ahora vamos a

juguetear un poco con el control GridView para cambiar el aspecto del

mismo, permitir la paginación y esas monadas... • 16- Empezaremos por el

aspecto del GridView propiamente dicho, es decir, la forma en que se verán

los datos. • 16.a- Muestra el diseño de la página que tiene el grid, pulsa en

el botoncito ese de arriba (para ver las Tareas de GridView) • 16.b- Pulsa en

la primera opción: Formato automático... • 16.c- Te mostrará un cuadro de

diálogo con los diferentes formatos que puedes usar, elige uno, por ejemplo:

Clásica. • 16.d- Verás que el aspecto del grid ha cambiado, y que se ha

añadido el código necesario para que se vea de esa forma, pero esto último

es lo de menos.

19. • 17- Ahora vamos a permitir la paginación, para que de esta forma, se

muestre cada vez un número determinado de usuarios, ya que si no se

pagina, se mostrarán todos los datos de una vez... • 17.a- Muestra las

Tareas de GridView y marca la casilla Habilitar paginación, de esta forma se

mostrarán los datos de 10 en 10. • 17.b- Si quieres que en vez de 10 datos

se muestre otra cantidad, puedes cambiar el valor de la propiedad PageSize

por el número de datos que quieras mostrar en cada página. • 17.c- Esa

propiedad está accesible en modo de diseño, además de poder asignarlo

desde el código. • 18- Si quieres que se puedan mostrar los datos ordenados

por cualquiera de los campos, selecciona la opción Habilitar ordenacion (de

las Tareas de GridView) • 18.a- En el caso de las fechas, las ordenará como

cadenas (o eso me parece, pero creo que ni como cadenas... en fin...), así

que no te asustes si ves que no están "correctamente" ordenadas. • 19- Si

marcas la casilla Habilitar selección, decirte que... bueno... solo sirve para

seleccionar una fila, pero nada más.Y con esto y un bizcocho... pues eso,

que ya tienes tarea para mostrar las cosasque tienes en una tabla de una

base de datos.Para que te vayas "entreteniendo" hasta que publique la

tercera parte (que no laúltima) de este tutorial de acceso a datos con Visual

Web Developer y SQL Server2005, puedes agregar a cada una de las

Page 11: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

páginas un control HyperLink para que alpulsarlo se vaya a la página

principal (Default.aspx).Cambiar de lenguaje en una páginaAntes de irme,

una cosilla que me ha pasado mientras escribía el tutorial y hacíalas pruebas

que te iba a explicar:Si añades una página .aspx (sin crear el fichero de

separación del código o conseparación, si después lo borras) y el lenguaje

que tienes seleccionado al añadirlaes, por ejemplo Visual Basic, y después

decides que no, que debe ser C#, que

20. sepas que no solo basta con cambiar el lenguaje en el atributo Language

de lapágina (Page), ya que el VWD crea una clase parcial con ciertas cosas

quenecesita, pero que no nos muestra, y esa clase parcial la crea con el

lenguajeindicado al crear la página, por tanto, se hará un lío... aunque

funcionará bien,pero en la lista de errores tendrás un montón de errores, y el

atributo ese delprincipio de la página lo tendrás marcado como erróneo, pero

sin decirte niMÚ... ;-)))Si cierras ese fichero que has modificado

manualmente, y lo vuelves a abrir,también se soluciona el error

ese...Aclararte que esto te ocurrirá cuando hayas añadido algo que necesite

código, porejemplo, al añadir el GridView, que aunque nosotros no tengamos

que escribirnada, el ASP.NET 2.0 si que lo hace...IntroducciónEn esta tercera

parte del tutorial de cómo utilizar bases de datos en un sitio Webusando

Visual Web Developer 2005 Express, vas a ver cómo buscar

usuariossabiendo la cuenta de correo, también actualizaremos los datos de

un usuarioexistente.Como "extra", te muestro cómo averiguar el valor SHA1

de un texto y cómo definiry usar un procedimiento almacenado de SQL

Server para buscar el usuario segúnla cuenta de correo. Nota: En esta

ocasión, el código mostrado en el propio artículo es tanto para Visual Basic

2005 como para C#, (para que nadie se queje), pero más abajo tienes los

links para el código completo, tanto de la página ASPX como para el código

de Visual Basic y de C#.Estos son los pasos para completar esta tercera

partedel tutorial: • 1- Abre el proyecto vwdTut01. • 2- Añade un nuevo

WebForm (ya sabes los pasos). • 2.a- El nombre será ModificarUsuario.aspx,

dile que el código lo ponga en un fichero aparte.

21. • 3- Como el formulario de modificar los datos será casi igual que el de

introducir nuevos datos, vamos a copiar el que ya tenemos y después le

haremos los cambios necesarios para darle la funcionalidad que queremos

que tenga.• 3.a- Abre la página AgregarUsuario.aspx en modo de Código, ya

que vamos a copiar todo el código HTML para pegarlo en la página que

acabas de crear en el punto 2.• 3.b- Selecciona desde la etiqueta <body>

hasta el final, lo copias y lo pegas en la página nueva.• 3.c- Por supuesto, al

pegar, debes hacerlo desde <body> hasta el final, pero esto supongo que ya

te lo imaginabas.• 4- Ahora lo que hay que hacer es añadir un nuevo control

(un botón), que estará al lado de la caja de textos Correo.• 4.a- Ese botón, al

que le darás el nombre btnMostrar, servirá para mostrar el usuario que

quieres modificar.• 4.b- El texto a mostrar en el botón será precisamente

Mostrar.• 5- Al botón que ya estaba, debes cambiarle el nombre y el texto

para que sean: btnActualizar y Actualizar respectivamente.• 5.b- Si estás

usando C# tendrás un pequeño problema al copiar el texto anterior y

cambiarle el nombre al botón, ya que si haces dobleclic en ese botón, en la

ventana de código se mostrará el método btnNuevo_Click en lugar del

nombre que debería mostrarse: btnActualizar_Click.• 5.c- Esto es así porque

Page 12: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

en C# en las propiedades del botón estará asignado el valor del atributo

OnClick con el valor "btnNuevo_Click".• 5.d- En Visual Basic esto no suele

ocurrir, ya que si tenemos el código separado del diseño (se usa un fichero

aparte para el código), los métodos de los eventos se manejan con la

cláusula Handles, por tanto, lo importante es que esa instrucción esté en un

método para que ese método esté asociado con el evento que se indique

después de Handles.

22. • 5.e- Pero si en lugar de tener el código separado del diseño, está todo

en el mismo fichero, el problema será el mismo tanto en Visual Basic como

en C#. • 6- Para que en C# tenga el nombre "adecuado", lo que tienes que

hacer es quitar ese atributo (OnClick) y el código que se ha añadido al hacer

antes dobleclic en el botón. • 6.a- Una vez que lo has borrado, vuelve a

hacer dobleclic en el botón Actualizar y esta vez si que se creará el método

con el nombre que debe tener.¿Qué hacer para modificar un usuario? • 7-

Esa es la pregunta que tenemos que hacernos ahora, en principio, escribirás

la cuenta de correo del usuario a modificar, pulsarás en el botón Mostrar, se

mostrarán los datos del usuario si es que existe, y en caso de que no exista

se avisará de ese hecho y no pasará nada. • 7.a- Una vez que tenemos los

datos del usuario que queremos modificar, los podremos modificar y al pulsar

en el botón Actualizar, se guardarán los datos en la base de datos. • 8-

Ahora tenemos que plantearnos que hacemos con la clave, al menos si

nuestra intención es poder cambiarla. Ya que la guardamos como un valor

SHA1. • 8.a- La primera posibilidad que tenemos es introducir la clave en

modo "normal" y hacer lo mismo que hicimos en la parte de introducir un

nuevo usuario, es decir, crear la clave SHA1 a partir del texto que

introduzcamos. • 8.b- El problema es que si queremos modificar otros datos,

pero dejar la clave como estaba, pues... lo tendremos complicado, ya que en

realidad no sabremos que clave es... porque recuerda que si solo conocemos

el valor SHA1 será imposible saber que clave era... y como me imagino que

no te vas a saber todas las claves de memoria, pues... habrá que hacer algo

para que no tengamos que preguntarle al usuario cual era su clave, o decirle

que se la hemos cambiado.

23. • 8.c- Si introducimos la clave directamente como un valor SHA1, ya no

tendremos el problema de saber que clave era, y de esa forma, si hacemos

algún cambio en cualquiera de los otros datos, no habrá problemas con la

clave, ya que en esta ocasión no volveremos a generar el valor SHA1, sino

que guardaremos lo que haya en la caja de textos.• 8.d- El problema lo

tendremos a la hora de introducir una nueva clave (porque queramos

cambiarla), ya que tendremos que saber el valor SHA1 de esa nueva clave.•

8.e- Una solución es tener un "generador" de valores SHA1 a partir de un

texto, de esa forma, si queremos cambiar una clave, escribiremos el texto de

la nueva clave, pulsaremos en el botón de generar el valor SHA1 y el

resultado será lo que usemos para guardar en el campo Clave.• 8.f- Es

decir, lo mismo (o casi) que hicimos a la hora de añadir un nuevo usuario,

pero sin que sea automático. Mejor te explico cómo hacerlo y así lo tendrás

más claro.• 9- Añade un botón junto a la caja de textos de la clave.• 9.a-

Modifica las propiedades del botón para que muestre el texto Generar clave

SHA1 y el nombre sea btnClaveSha1.• 10- Como el editor de formularios

Web se empeña en manejar el tamaño de las celdas con valores en pixel, y

Page 13: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

para que se vea bien los 40 caracteres que tiene el valor SHA1 generado,

tendremos que "engañar" al editor... o casi.• 10.a- Así que, vamos a

seleccionar todas las columnas en las que están las cajas de textos y le

vamos a dar un valor en porcentaje.• 10.b- Si mueves el cursor encima de la

primera fila (el borde de la tabla), verás que se muestra una especie de

flecha.• 10.c- Pon el ratón encima de la segunda columna y pulsa en la

flechita esa, de esa forma se seleccionarán todas las columnas (en realidad

las columnas que están en las filas que tienen dos columnas).• 10.d- Una

vez que tienes las columnas seleccionadas, en la ventana de propiedades ve

a la propiedad Style, verás que pone WIDTH: 100px, borra

24. desde los dos puntos, y escribe 80%, de forma que ahora muestre

WIDTH: 80%.• 10.e- Ahora selecciona el control txtClave y en la propiedad

Width escribe 90% (o 100%, como quieras), esto hará que la caja de texto

ocupe ese porcentaje de la celda en la que está.• 11- Ahora es tiempo de

escribir el código. Te explico lo que hará al pulsar en el botón de generar la

clave SHA1• 11.b- Se leerá el valor que haya en txtClave, se usará para

generar el valor SHA1 y se volverá a asignar a ese mismo control.• 11.c-

Como en este caso queremos que se vea lo que se generará, asegúrate de

que el control txtClave NO tiene el valor Password en la propiedad

TextMode, sino que tiene el valor SingleLine.• 12- Haz dobleclic en el botón

de generar la clave y escribe este código:Protected Sub

btnClaveSha1_Click(ByVal sender As Object, _ ByVal e As

System.EventArgs) _ Handles btnClaveSha1.Click Generar la clave SHA1 a

partir de lo que haya en txtClave y asignar nuevamente a ese mismo textBox

el resultado Dim clave As String clave =

FormsAuthentication.HashPasswordForStoringInConfigFile( _ txtClave.Text,

"SHA1") txtClave.Text = claveEnd Sub• 12.a- El código para C# es el

siguiente:protected void btnGenerarClaveSha1_Click(object sender, EventArgs

e){ // Generar la clave SHA1 a partir de lo que haya en txtClave // y asignar

nuevamente a ese mismo textBox el resultado string clave; clave =

FormsAuthentication.HashPasswordForStoringInConfigFile( txtClave.Text,

"SHA1"); txtClave.Text = clave;

25. } • 13- Prueba esto que acabas de hacer, pero para que se pueda

"navegar" a esta nueva página, tendrás que añadir un nuevo control

HyperLink en la página Default.aspx para que vayas a esta nueva página al

pulsar en él. • 13.a- Para probar, escribe una clave y pulsa en el botón

Generar clave SHA1 y verás que se muestra el valor que le corresponde al

texto que has escrito, por ejemplo, para el valor 123456, el valor de SHA1

será: 7C4A8D09CA3762AF61E59520943DC26494F8941B. • 13.b- Por

supuesto, para hacer esa prueba, debes escribir una cuenta de correo y un

nombre, ya que al tener los validadores, pues... nos avisará de que esos

campos deben tener algo.Mostrar los datos de un usuario • 14- Ahora le toca

al código del botón Mostrar, en ese botón vamos a comprobar si el correo

indicado está en la tabla, y en caso de que así sea, mostraremos los datos

en las cajas de texto que correspondan. • 14.a- Para leer los datos,

usaremos un objeto SqlConnection, un objeto SqlCommand con la cadena de

selección para recuperar todos los datos del usuario que tenga la cuenta de

correo que indiquemos. Para poder acceder a esos datos devueltos por la

consulta, usaremos un objeto SqlDataAdapter y un objeto DataTable. • 14.b-

Page 14: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

En realidad no nos hacen falta ni el objeto para la conexión ni el comando,

ya que lo podríamos hacer todo con el adaptador, pero así podrás ver otra

forma de acceder a los datos, ya que te será útil si, por ejemplo usas un

procedimiento almacenado (stored procedure) para hacer esa comprobación.

• 14.c- ¿Que dices? ¿Quieres que usemos un procedimiento almacenado? •

14.d- Vale... pero primero te muestro el código para hacerlo de forma

normal.

26. • 15- En el formulario ModificarUsario.aspx, pulsa en el botón Mostrar y

escribe lo siguiente: 15.a- Primero en Visual Basic:Protected Sub

btnMostrar_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) _

Handles btnMostrar.Click Me.lblAviso.Text = "" Comprobamos si el nombre ya

existe Using cnn As New

SqlConnection(Me.SqlDataSource1.ConnectionString) La cadena de slección

será la que tenga el DataSource, pero buscando el correo que hemos escrito

Dim sel As String sel = Me.SqlDataSource1.SelectCommand & _ " WHERE

Correo = @Correo" Dim cmd As New SqlCommand(sel, cnn) Abrimos la

conexión cnn.Open() Añadimos el valor del parámetro de la consulta

cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text) El resultado lo

guardaremos en una tabla Dim tabla As New DataTable Usaremos un

DataAdapter para leer los datos Dim da As New SqlDataAdapter(cmd)

Llenamos la tabla con los datos leídos da.Fill(tabla) Si la tabla no tiene filas,

es que no existe ese usuario If tabla.Rows.Count = 0 Then Avisamos y

salimos Me.lblAviso.Text = "El usuario NO existe" Exit Sub End If Mostramos

los datos que estarán en la primera fila de la tabla, ya que solo debería

haber un solo usuario con ese correo Me.txtClave.Text =

tabla.Rows(0)("Clave").ToString

27. Me.txtFecha.Text = tabla.Rows(0)("Fecha").ToString Me.txtNombre.Text =

tabla.Rows(0)("Nombre").ToString Me.txtComentarios.Text =

tabla.Rows(0)("Comentarios").ToString Me.lblAviso.Text = "El usuario existe y

se han leído los datos." Al salir del bloque Using se cierra la conexión End

UsingEnd Sub• 15.b- Ahora el código de C#:protected void

btnMostrar_Click(object sender, EventArgs e){ this.lblAviso.Text = ""; // //

Comprobamos si el nombre ya existe using (SqlConnection cnn =

newSqlConnection(this.SqlDataSource1.Connec { // La cadena de slección

será la que tenga el DataSource, // pero buscando el correo que hemos

escrito string sel; sel = this.SqlDataSource1.SelectCommand + " WHERE

Correo = @Correo"; SqlCommand cmd = new SqlCommand(sel, cnn); //

Abrimos la conexión cnn.Open(); // Añadimos el valor del parámetro de la

consulta cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text); // El

resultado lo guardaremos en una tabla DataTable tabla = new DataTable(); //

Usaremos un DataAdapter para leer los datos SqlDataAdapter da = new

SqlDataAdapter(cmd); // Llenamos la tabla con los datos leídos da.Fill(tabla);

// Si la tabla no tiene filas, es que no existe ese usuario if (tabla.Rows.Count

== 0)

28. { // Avisamos y salimos this.lblAviso.Text = "El usuario NO existe"; return;

} // Mostramos los datos // que estarán en la primera fila de la tabla, // ya

que solo debería haber un solo usuario con ese correo this.txtClave.Text =

tabla.Rows[0]["Clave"].ToString(); this.txtFecha.Text =

Page 15: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

tabla.Rows[0]["Fecha"].ToString(); this.txtNombre.Text =

tabla.Rows[0]["Nombre"].ToString(); this.txtComentarios.Text =

tabla.Rows[0]["Comentarios"].ToString(); this.lblAviso.Text = "El usuario existe

y se han leído losdatos."; // Al salir del bloque Using se cierra la conexión }}•

15.c- Acuérdate de añadir las importaciones para System.Data y

System.Data.SqlClient• 16- Si quieres probar esto... pruébalo, pero antes de

ir a probarlo, deberías leer lo que te voy a decir...• 16.a- Tal como está el

código de esta página, si no escribes nada en la clave ni en el nombre, te

mostrará el mensaje de error y no te dejará hacer nada.• 16.b- Así que, lo

mejor será que quitemos los controles de validación, al menos los de la clave

y los del nombre.• 16.c- Pero al hacer eso, tenemos el problema de que nos

olvidemos de escribir algo en esas cajas de texto, y... bueno... que no

podemos tenerlo todo, así que... tienes que decidir que quieres hacer...• 17-

¿Quieres dejar los controles de validación?

29. • 17.a- En ese caso, cuando solo quieras mostrar los datos, tendrás que

rellenar los controles que se validan. • 18- ¿Quieres quitar los controles de

validación? • 18.a- En ese caso, si modificas y borras el contenido de la

clave o del nombre, pues no habrá nadie que te avise. • 19- Mejor quita los

controles de validación que controlan la clave y el nombre. Pero puedes

hacer lo que quieras. • 19.a- Si quitas los controles de validación, al menos

deja los dos que validan la cuenta de correo.Crear un procedimiento

almacenado • 20- Ahora vamos a añadir un procedimiento almacenado a la

base de datos. • 20.a- Muestra la ventana del Explorador de bases de datos.

• 20.b- Si es preciso, expande la conexión de la base vwdTut01.mdf. • 20.c-

En la carpeta Procedimientos almacenados, pulsa con el botón derecho del

ratón y selecciona Agregar nuevo procedimiento almacenado. • 20.d- Se

abrirá una nueva ventana en la que podemos escribir el código de ese

procedimiento almacenado, inicialmente tendrá este código: CREATE

PROCEDURE dbo.StoredProcedure1 /* ( @parameter1 int = 5, @parameter2

datatype OUTPUT ) */ AS /* SET NOCOUNT ON */ RETURN • 20.e-

Sustitúyelo por este otro y pulsa en el botón guardar. ALTER PROCEDURE

dbo.MostrarUsuario

30. @Correo nvarchar(64)AS SELECT Correo, Clave, Nombre, Fecha,

Comentarios FROM dbo.Usuarios WHERE Correo = @Correo RETURN• 20.f-

Este procedimiento almacenado hace lo mismo que en el código anterior

(punto 15)• 21- Ahora solo falta cambiar el código del objeto SqlCommand

para que use este procedimiento almacenado.• 21.a- En el código del

método del botón mostrar, sustituye el código de la declaración del comando

(y el de la variable sel) y pon este para Visual Basic: Usando un

procedimiento almacenadoDim cmd As New

SqlCommand()cmd.CommandText = "MostrarUsuario"cmd.CommandType =

CommandType.StoredProcedurecmd.Connection = cnn• 21.b- Este es el de

C#:// Usando un procedimiento almacenadoSqlCommand cmd = new

SqlCommand();cmd.CommandText = "MostrarUsuario";cmd.CommandType =

CommandType.StoredProcedure;cmd.Connection = cnn;• 21.c- El resto del

código es exactamente igual, pruébalo y saldrás de dudas.• 21.d- Fíjate que

al usar un procedimiento almacenado, asignamos a la propiedad

CommandType del comando el valor CommadType.StoredProcedure para

que se entere de que estamos usando un procedimiento almacenado en

Page 16: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

lugar de una sentencia T-SQL directa.

31. • 21.e- Cuando no asignamos el valor StoredProcedure a la propiedad

CommandType, el valor que tiene es Text, que es el predeterminado de esa

propiedad.El código para actualizar los datos modificados • 22- Lo siguiente

que tienes que hacer es escribir el código para actualizar los datos escritos. •

22a- En el evento Click del botón Actualizar tendrás que escribir el código

para actualizar los datos del usuario cuyo correo hayas escrito. • 22b- ¿Que

haremos en ese método? • 22c- Pues, comprobar que el correo indicado

está en la base de datos. • 22d- Si no está, mostrar un error. • 22.e- Si

existe, usaremos el contenido de la propiedad UpdateCommand del

DataSource para actualizar los datos. • 22.f- La llamada a ese comando de

actualización la hacemos por medio del método ExecuteNonQuery del

comando, pero una vez que hemos asignado los valores de los parámetros,

que en este caso, también usamos el método AddWithValue. • 22.g- Este es

el código para Visual Basic: Protected Sub btnActualizar_Click(ByVal sender

As Object, _ ByVal e As System.EventArgs) _ Handles btnActualizar.Click

Me.lblAviso.Text = "" Comprobamos si el nombre ya existe Using cnn As

New SqlConnection(Me.SqlDataSource1.ConnectionString) El valor que

necesitamos es el ID Dim cmd As New SqlCommand( _ "SELECT ID " & _

"FROM Usuarios " & _ "WHERE Correo = @Correo", cnn) Abrimos la

conexión cnn.Open() Añadimos el valor del parámetro de la consulta

cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text)

32. Si devuelve cero, es que no existe Dim i As Integer i =

CInt(cmd.ExecuteScalar()) If i = 0 Then Avisamos y salimos Me.lblAviso.Text

= "El usuario NO existe" Exit Sub End If Si llegamos aquí, es que el usuario

existe Deberíamos hacer las comprobaciones de que haya datos queguardar,

pero... eso te lo dejo a ti... Seguimos usando la misma conexión, pero

cambiamos el comando Usamos el comando Update del DataSource cmd =

New SqlCommand(Me.SqlDataSource1.UpdateCommand, cnn) Añadimos el

valor del parámetro de la consulta cmd.Parameters.AddWithValue("@Correo",

txtCorreo.Text) La clave la guardaremos como un valor SHA1 pero como ya

estará como SHA1, simplemente la asignamos

cmd.Parameters.AddWithValue("@Clave", txtClave.Text) Esto nos puede dar

problemas dependiendo del forma del servidor en el que está la base de

datos cmd.Parameters.AddWithValue("@Fecha", txtFecha.Text)

cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text)

cmd.Parameters.AddWithValue("@Comentarios", txtComentarios.Text) El

valor de la variable i es el ID a actualizar

cmd.Parameters.AddWithValue("@ID", i) Ejecutamos el comando de

actualización podemos usar el método Update del DataSource (pero no

actualiza nada) Me.SqlDataSource1.Update() Mejor con una llamada a

ExecuteNonQuery cmd.ExecuteNonQuery()

33. Al salir del bloque Using se cierra la conexión End Using

Me.lblAviso.Text = "Se han actualizado los datos correctamente"End Sub•

22.h- Este es el código del método de evento del botón Actualizar para

C#:protected void btnActualizar_Click(object sender, EventArgs e){

this.lblAviso.Text = ""; // // Comprobamos si el nombre ya existe using

(SqlConnection cnn = new

Page 17: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

SqlConnection(this.SqlDataSource1.ConnectionString)) { // El valor que

necesitamos es el ID SqlCommand cmd = new SqlCommand( "SELECT ID "

+ "FROM Usuarios " + "WHERE Correo = @Correo", cnn); // Abrimos la

conexión cnn.Open(); // Añadimos el valor del parámetro de la consulta

cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text); // Si devuelve

cero, es que no existe int i = (int)cmd.ExecuteScalar(); if (i == 0) { //

Avisamos y salimos this.lblAviso.Text = "El usuario NO existe"; return; } // Si

llegamos aquí, es que el usuario existe // Deberíamos hacer las

comprobaciones de que haya datos queguardar, // pero... eso te lo dejo a ti...

// // Seguimos usando la misma conexión, pero cambiamos el comando //

Usamos el comando Update del DataSource

34. cmd = new SqlCommand(this.SqlDataSource1.UpdateCommand, cnn); //

Añadimos el valor del parámetro de la consulta

cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text); // La clave la

guardaremos como un valor SHA1 // pero como ya estará como SHA1,

simplemente la asignamos cmd.Parameters.AddWithValue("@Clave",

txtClave.Text); // Esto nos puede dar problemas dependiendo del forma // del

servidor en el que está la base de datos

cmd.Parameters.AddWithValue("@Fecha", txtFecha.Text);

cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text);

cmd.Parameters.AddWithValue("@Comentarios", txtComentarios.Text); // El

valor de la variable i es el ID a actualizar

cmd.Parameters.AddWithValue("@ID", i); // Ejecutamos el comando de

actualización // con una llamada a ExecuteNonQuery

cmd.ExecuteNonQuery(); // Al salir del bloque using se cierra la conexión }

this.lblAviso.Text = "Se ha añadido el nuevo usuario correctamente";}• 23- En

el código hay un par de cosas que te quiero comentar.• 23.a- En el primer

comando he usado el ID como valor a recuperar para comprobar si existe el

usuario, ya que ese valor del ID lo necesitaremos para el comando

UpdateCommand del DataSource.• 23.b- La conexión no la he cerrado, ya

que después hay que volver a abrirla, y en realidad podemos aprovecharla

para las dos cosas que hay que hacer. Por eso solo hay un bloque Using.•

23.c- La otra cosa es que en teoría, el objeto DataSource tiene un método

Update, que supuestamente es para actualizar los datos usando la cadena

de UpdateCommand, pero... bueno, a mi no me funciona, así que, mejor usar

el método ExecuteNonQuery del objeto SqlCommand, que si que funciona.

35. Y esto es todo, creo que con lo explicado en estas tres partes tendrás

una pequeñaidea de cómo manejar los datos en un sitio Web creado con

ASP.NET.Lo que queda por explicarte es que podamos crear una parte del

sitio que estéprotegida por contraseña, de forma que el usuario que quiera

entrar deba escribirla contraseña que se le ha asignado.Otra cosa que habrá

que hacer es crear otro directorio con las páginas queestamos creando en

estas tres partes del tutorial, ya que, al menos en teoría, soloel usuario que

tenga los permisos suficientes debería poder crear, modificar y verlos datos

del resto de usuarios.Para que te vayas haciendo una idea (y puedas ir

modificando el código que yatenemos e incluso hacerlo por tu cuenta), hay

que añadir otro campo a la tabla deusuarios, de forma que nos sirva para

saber el "nivel" que tiene, por ejemplo, elnivel cero es para los usuarios

normales, y el nivel 3 para los que puedan modificarlos datos de los

Page 18: Bases de datos en sitios web

Bases de datos en sitios web

http://www.slideshare.net/rulo182/bases-de-datos-en-sitios-web[28/12/2012 17:16:03]

usuarios.Ese campo será de tipo entero (int) y el nombre del campo puede

ser Nivel.

Connect onLinkedIn

Follow us onTwitter

Find us onFacebook

Find us onGoogle+

© 2012 SlideShare Inc. All rights reserved.

LEARN ABOUT US

About

Careers

Our Blog

Press

Contact us

Help & Support

USING SLIDESHARE

SlideShare 101

Terms of Use

Privacy Policy

Copyright & DMCA

Community Guidelines

SlideShare on mobile

PRO & MORE

Go PRO

Business Solutions

Advertise on SlideShare

DEVELOPERS & API

Developers Section

Developers Group

Engineering Blog

Blog Widgets

new

ENGLISH