18 de febrero de 2011

SiteMapPath en ASP

El SiteMapPath en ASP
 
El control de navegación SiteMapPath indica de manera práctica la página en la que se encuentra el usuario en el mapa del sitio, a la vez que nos muestra la jerarquía de páginas, esto permite a los usuarios volver a otras páginas de la jerarquía utilizando directamente el control sin necesidad de usar las herramientas del navegador. SiteMapPath trabaja de forma exclusiva con el SiteMapProvides que se puede establecer mediante la propiedad SiteMapProvider del control, para hacerlo bonito, este control puede configurarse mediante estilos, templates y otros controles de ASP.NET.

Al estar basado en el modelo de proveedores no posee un mecanismo de DataBind (enlace de datos), asi que para darle las instrucciones en cuanto a la jerarquia de páginas de nuestro sitio, ASP.NET nos ayuda con un proveedor llamado XmlSiteMapProvider. Este proveedor consume datos de un archivo XML (web.sitemap) y devuelve instancias SiteMapNode basadas en sus datos, es por esto que al usar un SiteMapPath debemos hacer referencia a un archivo XML como DataSource, este XML va contener un listado de todas las URLs de tu sitio web que quieres que se indexen, lo que le va permitir a los buscadores recorrer todas tus páginas sin que se les pase una, por lo anterior será necesario tratar fundamentalmente con dos arhivos: el web.config y el web.sitemap: debemos configurar este archivo XML y especificar en el web.config que el web.sitemap será nuestro proveedor de informacion para el control SiteMapPath, esto lo veremos mas adelante, pero como ejemplo de lo que hablamos, tendremos algo así:
                                                          
siteMapFile="web.sitemap"

Restringiendo Accesos

Vamos a crear una carpeta dentro de nuestro sitio web y la llamaremos probando, ahi colocaremos todas nuestras paginas con acceso restringido, luego vamos a configurar nuestro sitio, asi que vamos a la pestaña sitio web y entramos  a configuracion de ASP.NET

ahora nos aparecerá esta pantalla


y seleccionamos seguridad, luego funciones, las habilitamos y creamos una nueva, nos aparecera la siguiente pantalla, tu ponle el nombre que quieras, en mi caso le pusé members
Luego clik de nuevo en seguridad y nos vamos a reglas de acceso y luego a crear reglas de acceso, asi:

y te aparece la siguiente ventana, seleccionamos la carpeta probando, la opcion usuarios anonimos y denegar, dejala tal como aparece en la figura:


listo, de esta manera hemos restringido el acceso de la carpeta probando y todo su contenido solamente a aquellos usuarios que se registren, continuaré con este tema pronto.
viernes, febrero 18, 2011

13 de febrero de 2011

MyODBC para VB 2005


Bajar el mysql-connector-odbc-5.1.8-win32 en msi para la plataforma de Windows desde http://www.mysql.com/products/connector/odbc/

una vez tengamos el .msi, lo descomprimes y comenzamos...

 

seleccionamos el connector, de hecho es lo unico que incluye la instalación...

y lo instalamos...
 
La fuente desde la que los datos pueden ser traídos usando una conexión ODBC es el Data Source. Cada fuente de datos necesita ser definida solo una vez con un nombre único conocido como Data Source Name o DSN, La DSN contiene parámetros para la conexión que identifica al servidor MySql y la autenticación del usuario requeridos para lograr la conexión.

Aquí viene la primera decisión: puedes crear un DSN o simplemente hacer la conexión desde tu string de conexión, si es con DSN, pues tu decides si utilizar el driver para un solo usuario (DSN de usuario), o para cualquier usuario del ordenador (DSN de Sistema). En mi caso utilizaré un DSN de sistema, asi pues, desde el menú INICIO elegimos PANEL DE CONTROL, después HERRAMIENTAS ADMINISTRATIVAS, ORIGENES DE DATOS (ODBC)



seleccionamos y nos vamos a la pestaña DSN de sistema, luego al boton agregar y nos buscamos el driver ODBC de MySQL
 

  Nos aparecerá una pantalla con datos a llenar, tal que:
·         Data Source Name: este es el DSN que crearemos.
·         Description: ahí le pones lo que quieras.
·         Server: le pones localhost si vas a trabajar en tu maquina, o el nombre de tu maquina o el de la maquina a conectar en red.
·         User, Pasword y Database: pues estos serán tus datos, tu sabrás como llenarlos.




Y al llenarla, dale al boton test, si todo sale bien te aparecerá un mensaje en que te lo notifican:

 

por ultimo le damos aceptar y tendremos nuestro DSN creado, tal que ya aparecerá en nuestro listado de DSN de sistemas disponibles y listos para ser usados, asi:


Y al final, aquí está el código para conectarnos, en mi caso, utilizo un datagridview para mostrar los datos, queda en ustedes si lo dejan y no, además muestro las conexiones con DSN y sin este, solo fíjense en lo que aparece comentariado:

Imports System.Data.Odbc      'con DSN y sin DSN
Public Class Form1
    Dim conn As OdbcConnection

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'conn = New OdbcConnection("DSN=visual")  con DSN
        conn = New OdbcConnection("Driver={MySQL ODBC 5.1 Driver};Server=localhost;Port=3306;Database=lingo;Uid=xxx;Pwd=xxx")
        conn.Open()
        If conn.State = ConnectionState.Open Then
            MessageBox.Show("Conexion a MySQL exitosa !!!", "MySQL via ODBC")
        Else
            MessageBox.Show("Conexion a MySQL exitosa !!!", "MySQL via ODBC")
        End If
        Dim da As New OdbcDataAdapter("SELECT * FROM people", conn)
        Dim ds As New DataSet
        da.Fill(ds)
        DataGridView1.DataSource = ds.DefaultViewManager
        DataGridView1.DataSource = ds.Tables(0)
        conn.Close()

    End Sub

End Class

eso es todo, ojalá les sea de utilidad, los vidrios.

Instalar el ODBC de MySQL en Windows 7 de 64-bit

Pasos para instalar el ODBC de MySQL en Win7 64-bit

1) Obtener del sitio de descargas de MySQL el ODBC no instalable (es decir, en archivo ZIP)

mysql-connector-odbc-noinstall-5.1.7-win32.zip

2) Desempaquetar el contenido del archivo descargado

3) Modificar el archivo "Install.bat", agregando la ruta a SysWOW64 en las partes resaltadas.


SET installdir=none
IF EXIST %windir%\system\nul SET installdir=%windir%\system
IF EXIST %windir%\system32\nul SET installdir=%windir%\system32
IF EXIST %windir%\SysWOW64\nul SET installdir=%windir%\SysWOW64
IF %installdir%==none GOTO :doError5

ECHO Registering driver
C:\Windows\SysWOW64\myodbc-installer -d -a -n "MySQL ODBC 5.1 Driver" -t "DRIVER=myodbc5.dll;SETUP=myodbc5S.dll"

4) Abrir el símbolo del sistema (consola) como administrador (clic derecho, opción "Ejecutar como Administrador")

5) Ejecutar el archivo "Install.bat".

Cabe mencionar, que para ver los orígenes de datos de 32 bits tendremos que recurrir al archivo "odbcad32.exe" que se encuentra en la carpeta SysWOW64.

NOTA: recientemente hube de instalar MyODBC sobre un equipo nuevo con Win7 de 64 bits y curiosamente la instalación desde el archivo MSI se efectuó sin ningún inconveniente.

Utilizando el MySQL Connector/NET

Buenas, miren que quiero compartir como conectarnos a una base de datos en MySQL desde Visual Basic 2005, hay 3 diferentes formas que compartiré con ustedes, por ODBC, utilizando OLEBD y a través del connector de MySQL para .NET, empezaré obviando que esta instalando tanto el MySQL como el Visual Studio y como una recomendacion para programadores que opten por este camino oscuro, les recomiendo las developer tools para desarrolladores .NET que utilizan MySQL de CoreLab, las cuales se integran muy bien al Visual Studio, bueno, al paso, para esto les enumero los que me parecen importantes:

1. Descargar Connector de MySQL para Visual Studio
Si, ya sé que puedes conectarte con mysql-connector-odbc o con MyOLEDB, estas opciones las veremos luego, por el momento utilizaremos el MySQL Connector/NET que es básicamente una colección de objetos utilizados para acceder a una base de datos MySQL, yo ocupé el mysql-connector-net-6.0.7 de la página http://dev.mysql.com/downloads/connector/net/6.2.html#downloads

Nos vamos con la plataforma Microsoft Windows, hay dos opciones de descarga, en mi caso use la versión que incluye el instalador a tu disco rígido local(.msi) y descomprimi el archivo para luego doble clic sobre el archivo de instalación para comenzar el proceso de instalación completa en el directorio por defecto.

2. Agregar Referencias a tu proyecto
Obvio, instalas el MySQL Connector/NET y debes referenciarlo para poder usarlo con Visual Basic, asi pues, necesitamos agregar una referencia a nuestro proyecto. Al agregar una referencia, le estamos diciendo a VB.NET dónde debe buscar MySQL Connector/NET para poder acceder a los objetos y métodos de Connector/NET.

Para agregar una referencia, elige la opción Add Reference(Agregar Referencia) del menú Project (Proyecto). Luego Browse (Examinar) y localiza la instalación de Connector/NET, generalmente ubicada en C:\Program Files\MySQL\MySQL Connector Net 1.0.2\bin Aqui te van a salir dos carpetas .NET 1.1 y la .NET 2.0, si estas trabajando con el vs 2003 agrega el 1.1, si estas con el vs 2005 agrega el 2.0
(La ruta puede variar dependiendo del número de versión de Connector/NET). Elige el archivo MySql.Data.dll y connector/NET se agregará a tu proyecto.

al abrir esa carpeta esta la dll que tenes que agregar se llama MySql.Data.dll

3. Importación del Sistema de Nombres de Connector/NET
Los objetos de VB.NET se organizan en sistemas de nombres. Los sistemas de nombres son agrupaciones lógicas de objetos que se utilizan para facilitar la organización los distintos objetos disponibles en VB.NET.

Si agregamos el namespace Imports MySql.Data.MySqlClient al principio del archivo fuente, nos podemos referir al objeto Connector/NET como MySqlConnection, sino pues simplemente te va tocar escribir MySql.Data.MySqlClient. MySqlConnection

4. String de conexión
Dim cad As String = "Database=xxx;Data Source=localhost;User Id=xxx;Password=xxx"

y si vas a usar un puerto diferente al default que se asigna al MySQl entonces debes especificarlo en la cadena de conexion:
Dim cad as String= "Server=tu_servidor;Port=tu_puerto;Database=tuBase;Uid=xxx;Pwd=xxx"

5. Agregar un Objeto MySqlConnection
El objeto de conexión funciona como un intermediario entre los demás objetos contenidos dentro de Connector/NET y el servidor MySQL, tenemos que asegurarnos de que cualquier función o procedimiento dentro del formulario tenga acceso al objeto de conexión, por lo tanto declararemos el objeto de conexión en primer lugar dentro de la clase:

Dim conn As New MySqlConnection(cad)

6. Instanciación del Objeto MySqlConnection
Ahora que ya hemos declarado el objeto de conexión, debemos instanciarlo. Hasta que no hayamos instanciado un objeto, no estará disponible para ser utilizado.
Para instanciar el objeto utilizaremos la palabra clave New:
con = New MySqlConnection()

7. Eliminación del Objeto MySqlConnection
Cada vez que hayamos terminado de trabajar por completo con un objeto es una buena práctica eliminarlo y así los recursos que ocupaba se liberan y el objeto deja de existir. Eliminamos un objeto llamando a su método .Dispose().

8. Conexión a MySQL desde VB a través del mysql-connector-net-6.0.7

Aqui viene lo importante, mira que yo he utilizado un datagridview para mostrar los datos, tu decides si lo utilizas o no.

Imports MySql.Data.MySqlClient
Public Class Form3

    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim cad As String = "Database=lingo;Data Source=localhost;User Id=xxx;Password=xxx"
        Dim query As String = "select * from people"
        Dim conn As New MySqlConnection(cad)
        Dim da As New MySqlDataAdapter(query, conn)
        Try
            conn.Open()
            If conn.State = ConnectionState.Open Then
                MessageBox.Show("Conexion a MySQL exitosa !!!", "MySQL via connector.net")
            End If  
        Catch mierror As MySqlException
            MessageBox.Show("Error de Conexión a la Base de Datos: " & mierror.Message, "MySQL via connector.net")
        Finally
            Dim ds As New DataSet
            da.Fill(ds)
            DataGridView1.DataSource = ds.DefaultViewManager
            DataGridView1.DataSource = ds.Tables(0)
            conn.Close()
        End Try
        conn.Dispose()
    End Sub
End Class 

y ojalá que les sirva, en siguientes entradas publicaré como realizar la conexion con ODBC y con OLEDB, hay se ven