2 abr 2011

Conexion ASP.NET y MySQL utilizando el archivo Web.config

Como se vio en un post anterior "Conexion ASP.NET y MySQL por codigo" donde se declaraba la cadena de conexion directamente en el codigo Visual Basic, tambien existe otra forma de declarar esta cadena de conexion en ASP.NET, y es utilizando o mejor dicho, editando el archivo Web.Config

¿Qué necesitamos?
  • Visual Estudio o Web Developer
  • Gestor de base de datos MySQL instalado
  • Conector MySQL y .NET (Connector/Net) instalado
  • Conocimientos de Visual Basic 
Antes de comenzar debemos tener una base de datos ya creada en MySQL,  para este tutorial se utiliza la base de datos dbSample o tambien puedes utilizar otra base de datos que se tenga en la PC.


base de datos: dbSample

create table PERSONA (
    p_id bigint(20) NOT NULL auto_increment primary key,    
    p_nombre Varchar(20) not null,
    p_paterno Varchar(20) not null,
    p_materno Varchar(20) null,
    p_direccion Varchar(100) null,
    p_telefono varchar(12) null    
);
Y se colocan algunos datos en la DataBase


insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Antonio','Bragueta','Suelta','Calle Imaginaria # 345','123-456-789');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Jesús','Están','Camino','Calle Imaginaria # 598','');
   
insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Margarita','Flores','del Campo','Calle Imaginaria # 989','878-998-565');
  
insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Rosa','Pechoabierto','Alinstante','Calle Imaginaria # 339','');
  
insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Emiliano','Salido','del Pozo','Av. Quete Importa s/n','888-298-565');
   
insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Dolores','Fuertes','De barriga','Av. Quete Importa #779','008-908-165');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Juan','Melo','Machuca','Calle Noseencuentra #721','098-334-212');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Pepe','Botella','Pepsi','Calle Hastaaqui # 344','634-334-212');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Aquiles','Meo','de la Torre','Calle Hastaaqui # 354','887-873-212');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Jose Luis','Lamata','Feliz','Calle Quelees # 354','887-334-212');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Jhonny','Melaslabo','Hoy','Calle Meperdi # 354','887-553-212');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Elsa','Bor','de Lencuentro','Calle Noesta # 454','044-123-202');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Tomas','Turbao','','Calle Hastaaqui # 9','817-334-112');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Lucho','Portuano','','Calle Hastaaqui # 443','002-334-443');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Benito','Camela','Suavecito','Av. Noesta # 143','343-334-443');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Paco','Mermela','','Av. Noesta # 143','343-334-443');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Ana','Liza','Melchoto','Av. Noesta # 143','343-334-443');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Cindy','Entes','','Av. MePerdi # 3','876-314-443');

insert into PERSONA( p_nombre , p_paterno , p_materno , p_direccion , p_telefono )
values('Monica','Galindo','','Av. Bolivia # 43','343-009-443');

Ya estamos listos para continuar:


1. Crea un nuevo proyecto del tipo ASP.NET Web Aplication
File -> New Project ->  ASP.NET Web Aplication
2. Añade la Referencia al Conector/NET de MySQL (Agregar/Quitar Referencia)
3. En Vista Diseño, busca y arrastra del ToolBox un Componente GridView a nuestra pagina default.aspx
3. Añade tambien un objeto Button, cambia su propiedad Text a "Cargar Datos de MySQL", puedes darle un formato a la tabla si quieres. Debes tener algo como esto:
Si ves el Source de los objetos podras advertir que los nombres (ID) del GridView es GridView1, y del Button s Button1, esto es importante para poder reconocer los objetos cuando se programe, se puede cambiar los nombres a ls objetos por cualquier otro, en esta ocasion se deja como esta.

Hasta aqui es practicamente lo mismo que se vio en el tutorial anterior, ahora continuemos con lo nuevo

4. Abre el archivo Web.config que esta en el Solution Explorer, doble clic sobre este o clic derecho Open
5. El archivo Web.config es un archivo XML donde se guarda toda la configuracion de una aplicación web. En la imagen de abajo puedes ver la parte correspondiente a la "Cadena de Conexion" encerrada en un recuadro

 Esta sentencia <connectionStrings&gt , debes reemplazar por :


 <connectionStrings>
    <add name="jcMouseConnectionString" 
         connectionString="server=SERVIDOR;user id=USUARIO;
                           password=CONTRASEÑA;persist security info=True;
                           database=BASE_DE_DATOS"
         providerName="MySql.Data.MySqlClient" />
  </connectionStrings>

Nuestro archivo Web.config quedaria entonces de la siguiente manera:

importante! Para identificar esta cadena de conexion desde codigo, se especifica su nombre con la etiqueta NAME

Hasta aqui terminamos con el archivo Web.config, continuemos ahora con codigo

6. Para ingresar al codigo, doble clic sobre el objeto Button en Vista Diseño, esto nos lleva a la pagina Default.aspx.vb


Se debe añadir el siguiente codigo



Imports MySql.Data.MySqlClient

Partial Public Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        'se crea una conexion a la base de datos MySQL
        Dim connection As MySqlConnection
        connection = New MySqlConnection
        'se apunta a la cadena de conexion guardada en el archivo Web.config
        connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("jcMouseConnectionString").ConnectionString
        'se abre la conexion
        connection.Open()
        'se ejecuta una consulta SQL
        Dim ComandoSQL As New MySqlCommand("Select * From persona", connection)
        Dim ds As New DataSet
        Dim da As New MySqlDataAdapter(ComandoSQL)
        da.Fill(ds)
        GridView1.DataSource = ds.Tables(0)
        GridView1.DataBind()
    End Sub
End Class

7. Como ultimo paso, guardamos todas las modificaciones y Clic derecho sobre vista diseño -> View in Browser.
Solo se ve el boton, esto es porque el GridView esta vacio, ahora presiona el boton
El fin?

14 comentarios:

Edwin Ortiz Herazo dijo...

Excelente aporte me fue muy útil, Gracias

Anónimo dijo...

malaso

Anónimo dijo...

el usuario y la contraseña, van entre comillas?
no lo puedo ver por que lo tachaste
es decir:
User id= "miusuario" o User id= mi usuario

Anónimo dijo...

tengo windows 7 de 64 bits y no puedo instalar el mysql connector

Anónimo dijo...

Excelente aportacion muchas gracias, y muy bien explicado (Y)

Luisfer dijo...

Voy a PRobarlo
Pero mirando el 90% de los comentarios.
Gracias!!!

Anónimo dijo...

muy buen aporte, sigue así.
gracias por tu ayuda

Unknown dijo...

gracias amigo

Aprendiendo en cuarentena dijo...

Hola Amigo...un millón de gracias...estoy comenzando con .net, aunque lo odio y queria mi amado mysql...

Giovanny Fabricio dijo...

Gracia, estimado amigo muy buen aporte
Bendiciones

albertobsd dijo...

Buen aporte, me imagino que se puede hacer sin el Boton, al momento de cargar la pagina. apenas estoy trabajando con .net, vengo de trabajar mas de 5 en PHP, pero ahora me piden usar ASP.NET y la base de datos no la quieren migrar, asi que encontre tu post, normalmente leo la datos y los devuelvo en JSON hacia el cliente. Sin embargo trabajar con Visual Studio se me hace tan lento.

Raúl Martínez dijo...

excelente gracias amigo

Raúl Martínez dijo...

excelente gracias amigo

Prueba Wekall dijo...

Tendras el codigo en C# porque intento con este codigo y no me funciona

Publicar un comentario

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | cna certification