Categoría: cosas técnicas

Posts relacionados con la programación o manejo o configuración de los oredenadores (computadores)

  • como conectar a una base de datos de MySQL en un servidor Web desde .NET

     

    Pues eso… hace unos días he estado haciendo una pequeña aplicación para acceder a una base de datos de MySQL creada en un servidor web de Domitienda y voy a aprovechar para comentarte las cosillas que he hecho (como conectar a una BBDD de MySQL, enviar emails, obtener datos de tres tablas diferentes pero que había que relacionar para sacar lo que interesaba, etc.) y la primera fue lo más importante: Conectar con una base de datos de MySQL con Visual Basic .NET (o .NET en general).
    Y esto es lo que te voy a contar en este "artículo" de hoy lunes 13 de abril de 2015.

    Los requisitos

    Lo primero que deberías hacer es descargarte la DLL (librería/biblioteca) de MySQL para usar con Visual Studio, bueno, en realidad lo que yo me iba a bajar el Connector .NET, concretamente la versión 6.9.6 porque decía que la versión 6.7 el Connector/Net no incluye el "MySQL for Visual Studio integration", así que ni me puse a "investigar" a qué se refería, por tanto me bajé el MySQL for Visual Studio, concretamente la versión web community 5.6.23.0 (a la hora de escribir esto está la versión 5.6.24.0).

    Nota:
    El descargar la versión "web community" es porque tenía conexión a internet y así solo tenía que descargar 1.6MB frente a los 286,7MB de la versión off-line.

    Es un MSI installer y te da un montón (o dos o tres o cuatro, pal caso es lo mismo) de opciones, pero solo usé la del Connector o lo que pusiera en las opciones de instalación.

     

    Añadir la referencia de MySql.Data al proyecto

    Una vez instalado, en el proyecto desde el que quieras acceder a la base de datos de MySQL le agregas la referencia correspondiente.
    En mi caso usé la versión 4.5 ya que el proyecto también usaba el .NET Framework 4.5 (ver la figura 1).

    MySqlData referencia
    Figura 1. Referencia al ensamblado de MySql.Data versión 6.9.5

    Y una vez que hemos agregado la referencia al ensamblado MySql.Data ya podemos acceder a las clases de conexión y demás, que están en el espacio de nombres MySql.Data.MySqlClient.

    Y el resto… como de costumbre… pero no te preocupes te voy a poner el código (primero para VB y después para C#) de cómo usar la conexión y acceder a una tabla y demás, pero eso será… ¡ma-ña-na! 🙂

    Bueno, vale, al menos te pondré el código de cómo conectar a la base de datos.

     

    Conectar a la base de datos de MySQL desde Visual Basic .NET

    Yo suelo usar un método en una clase con métodos compartidos (en VB puedes usar un módulo, pero yo uso una clase para después convertir fácilmente el código a C#), el método es una función llamada CadenaConexion que devuelve una cadena con la cadena de conexión generada por la clase ConnectionStringBuilder, en realidad la clase se llama MySqlConnectionStringBuilder, pero si has usado conexión a SQL Server sabrás que en ese caso el nombre es SqlConnectionStringBuilder.

    Para poder acceder a las clases de MySql.Data debes añadir una importación de espacios de nombres a MySql.Data.MySqlClient:

    ' Para Visual Basic:
    Imports MySql.Data.MySqlClient
    
    // Para C#:
    using MySql.Data.MySqlClient;

    Y esta es la definición del método que está en una clase (class) de VB y por eso el método lo he definido como Shared (static en C#) para que lo puedas usar simplemente anteponiendo el nombre de la clase y sin necesidad de crear nuevas instancias ni nada de eso:

    El código del método CadenaConexion para Visual Basic:

    ''' <summary>
    ''' La cadena de conexión a la base de datos
    ''' </summary>
    Public Shared Function CadenaConexion() As String
        Dim csb As New MySqlConnectionStringBuilder
        csb.Server = "mysql3.servidoreswindows.net"
        csb.Database = "nombre_Base_Datos"
        csb.UserID = "nombre_usuario_de_la_base"
        csb.Password = "la_clave_del_usuario_de_la_base"
        csb.IntegratedSecurity = False
    
        Return csb.ConnectionString
    End Function
    
    

    El método CadenaConexion para C#:

    /// <summary>
    /// La cadena de conexión a la base de datos
    /// </summary>
    public static string CadenaConexion()
    {
        MySqlConnectionStringBuilder csb = new MySqlConnectionStringBuilder();
        csb.Server = "mysql3.servidoreswindows.net";
        csb.Database = "nombre_Base_Datos";
        csb.UserID = "nombre_usuario_de_la_base";
        csb.Password = "la_clave_del_usuario_de_la_base";
        csb.IntegratedSecurity = false;
    
        return csb.ConnectionString;
    }
    

     

    Y esto es todo por hoy… mañana (seguramente)… más… 😉

     

    Nos vemos.

    Guillermo

    Este artículo también está publicado en mi sitio:

    http://www.elguille.info/NET/ADONET/MySQL_CadenaConexion.aspx

    ( En realidad obtiene el contenido desde aquí, de mi blog 🙂 )

  • si no ves los subtítulos en tu Smart TV…

     

    Pues eso… que tenía unas cuantas grabaciones (AVI, MP4) en un pendrive, con sus correspondientes ficheros de subtítulos (SRT) y al conectarlos a una SmartTV no los mostraba.

    Comprobé las cosas básicas:

    -Que el fichero de subtítulos tenía el mismo nombre que el video (creo que no es necesario, al menos en el Telefunken en el que lo he probado, ya que te permite seleccionar el fichero que quieres usar, pero… mejor hacerlo como debe ser… ya que así también te sirve de forma automática si lo quieres ver con una aplicación de escritorio, tal como FLV and Media Player o VLC media player).
    -Que el fichero de subtítulos estuviera en la misma carpeta que el video.

    Pues bien, resulta que el fallo estaba en el formato con el que está guardado el fichero, concretamente los ficheros que funcionaban estaban guardados como ANSI / PC y los que no me funcionaban como UTF8 / UNIX, incluso tampoco me funcionaban los guardados como ANSI / UNIX.

    Solución: Guardarlos con el formato PC (ya sea ANSI o UTF8)

    Esto lo puedes hacer con cualquier editor de textos (incluso el Notepad), para ello tienes que abrir el fichero en el editor de texto, seleccionar la opción de Guardar como… (Save As…) y elegir el formato adecuado (ver la figura 1).

    Notepad_saveAs

    Nota:
    La diferencia entre los formatos PC y UNIX es que en el primero (PC) cada cambio de línea se codifica con 0A 0D (LF CR) y en el formato UNIX solo se usa el 0A (LF).
    LF = Line Feed (salto de línea) (\n) (0A, 10)
    CR = Carriage Return (retorno de carro) (\r) (0D, 13)

    Más info en Wikipedia.

     

    Espero que te sirva…

    Nos vemos.
    Guillermo

    P.S.
    He creado una pequeña aplicación de escritorio (Windows Forms) para hacer esta conversión de forma automática en todos los ficheros que indiques de un directorio.
    ConvertirFormatoFichero

    Si la quieres, dame un toque a mi correo con el asunto "quiero la app para convertir ficheros a formato PC" y te daré el enlace… (que cuando lo tenga ya lo pondré aquí jeje)
    mensaje_elguille.info

  • Lo que ESET Endpoint Security encontró y Windows Defender ni se enteró

     

    Pues eso… que el otro día (anteayer, creo) metiéndome donde no me tenía que haber metido y bajando (download) lo que no me tenía que haber bajado y ejecutando lo que no tenía que haber ejecutado, se me coló un virus con sus correspondientes partenaires (socios) a modo de extensiones para el Google Chrome.

    La cuestión es que tengo el Windows 8.1 Pro con el Windows Defender como antivirus, de hecho el Windows Defender (o como se llamara antes) lo tenía también en el Windows 7, usease (es decir) que llevo varios años (más de tres) sin usar otro antivirus que el de Microsoft, y hasta la presente no me ha pasado nada… de infección vírica, al menos de la electrónica, porque de la biológica (resfriados, gripes, infecciones y demás maluras similares), es posible que algún virus se viera o viese involucrado.

    Total, que me percato de que hay algo que no va como debe, en realidad la infección creo que ha sido (o fue) solo en el navegador, aunque había un ejecutable "no deseado" en la memoria y varias cosas sospechosas en la lista de programas instalados; pero como te quería decir, me di cuenta de que algo no iba bien al ver que en el navegador (recuerda que es el Google Chrome, que no siempre los fallos van a ser cosa de Microsoft) me mostraba ventanas de anuncios emergentes, muchas palabras subrayadas con enlaces y otras monerías (cosas fastidiosas) similares…

    Así que… abrí el Windows Defender, que por cierto no lo veía en las tareas activas e incluso pensé que estaría desactivado, pero al ver que estaba actualizado con fecha de la madrugada de ese mismo día, supe que estaba activo (o debería haber estado)… y no había ningún tipo de aviso de "infección", hice un scan (revisión de los discos en busca de virus y similares) completo… pero ni acabó de hacerlo porque cuando lo volví a mirar después de un buen rato, había empezado de nuevo…  total, que para no perder mucho tiempo, lo paré y me puse a indagar… quité como pude el ejecutable en cuestión busqué la extensión (Browser Shop) en el Chrome (y en el registro), lo desactivé… reinicié… el ejecutable seguía en la memoria… lo volví a eliminar del registro y físicamente del disco C, ahora en el Chrome la extensión era otra: UnniDDeoAAlsi, también la quité… miré en el Internet Explorer, pero allí no había nada raro…  volví a hacer un scan completo del disco de arranque… y después de más de cuatro horas no había acabado y tampoco había encontrado nada… jum!
    Así que… me fui al sitio de ESET, me descargué el ESET Endpoint Security (la nueva reencarnación del famoso Nod32), lo instalé (tengo licencia gratis) y sí que encontró cosas (ver la figura 1), incluso cosas de más, pero más vale más que menos en estos casos…

     

    ESET Endpoint Security 13feb15
    Figura 1. La lista de "cosillas" que el antivirus de ESET encontró

     

    Que no quiero decir con esto que el Windows Defender sea malo… pero… con el "Nod32" sé que estaré más seguro… (a ver si me siguen dando la licencia cuando deje de ser MVP de Microsoft jeje)

     

    Nos vemos.
    Guillermo

    Por cierto, hoy es viernes 13 y el que escriba sobre virus en un día como hoy es pura coincidencia… sí… de verdad…¿no me crees? jum!