Archivo por meses: abril 2015

Las novedades de C# 6 y Visual Basic 14 con ejemplos de sus desarrolladores

 

Pues eso… aquí te dejo los enlaces a las novedades de C# 6 y Visual Basic 14 con ejemplos de los team de desarrollo que han hecho posible esas novedades y aunque ya llevan publicados algunos meses he creído conveniente recordártelo ya que dentro de pocos días será la presentación oficial de Visual Studio 2015 (al menos la versión RC o Release Candidate o versión candidata la que será la versión final).

novedades c# y vb

Por tanto… -voy a darle un toque circense o de espectáculo, que es de lo que se trata-

Señoras y señores, ante ustedes de la mano del C# Team las nuevas características de C# 6: New Features in C# 6.

Y el más difícil todavía, intentar que el lenguaje más usado del mundo mundial siga en la brecha (a la vanguardia o más o menos) y hacer lo que parecía el más difícil todavía: conseguir que aún sea más potente sin dejar de ser fácil de usar, sin más delación y de la mano del Visual Basic Team, las nuevas características que encontrarás en Visual Basic 14: New Language Features in Visual Basic 14.

Y esto ha sido todo por hoy… espero que hayas disfrutado del espectáculo. 🙂

 

Nos vemos.
Guillermo

¡Feliz día del libro!

 

Pues eso… 23 de abril, un día después de que muriera Cervantes… jum! yo siempre tenía entendido que era un día como hoy cuando dejó su cuerpo y por eso lo de la "festividad", pero bueno… ¡fiesta! 🙂

Tengo un regalito para ti en este día… sí, y es relacionado con los libros:

Mis dos libros electrónicos publicados con SolidQ Press sobre las novedades de los lenguajes de .NET, uno de Visual Basic .NET y el otro de C#.

Aquí te dejo los enlaces a las correspondientes páginas en mi sitio (elguille.info) y de ahí te los puedes descargar… aunque sean de hace tres o cuatro versiones, seguro que aún te sirven… sí, sí, te lo digo yo… 😉

El libro del Guille con las novedades de Visual Basic:

Novedades de Visual Basic 9.0

 

El libro del Guille con las novedades de C#:

Aprenda C# 3.0 desde 0.0 (parte 3, lo nuevo)

Nota:
Esos links te llevan a las páginas correspondientes en mi sitio, más que nada para que sepas que por ahí puedes ver más cosas sobre Visual Basic y C# (muuuuchas más cosas) y después te traerán aquí de nuevo (al blog) que es donde realmente están los enlaces que en su día publiqué jeje.

Valeee… este es el enlace aquí en mi blog; es que no puede ser… siempre haces lo que quieres conmigo… jajaja

Mis libros electrónicos GRATIS

 

¡Espero que te sean de utilidad! y recuerda… el botón ese de "Donar" está para que lo uses… ¡no te cortes! y así me puedes ayudar… que no tengo un chavo/duro/centavo y… pues eso… 😉

Gracias.

Nos vemos.
Guillermo

probar varias cadenas de conexión si una da error, y no morir en el intento

 

Pues eso… que estaba modificando/probando la aplicación esa que en su día te comenté para acceder a los ficheros de FoxPro (o dBase) con la extensión DBF y resulta que me dio error al conectar a la base de datos, concretamente este:

ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Así que… me fui a ver mi artículo (Acceso a ficheros dBase (.dbf) desde Visual Basic .NET y C#) y usé otra cadena de conexión (todo esto después de probar a instalar los drivers de VFP -que por cierto me equivoqué e instalé y los de OLEDB en vez de los de ODBC porque no encontré los drivers de este último… y ¡me lié! po zí…  pero bueno, ese es otro tema… jum!).
La cuestión es que tuve que desinstalar los drivers de OLEDB ya que la cadena de conexión y el tipo de datos que quería usar eran los de ODBC.

Nota aclaratoria del 23/Abr/2015 11:15
Aparte de agregar un nuevo comentario al párrafo anterior, quiero aclararte que:
Busqué los drivers de ODBC (que son los que yo quería utilizar) y por error me bajé los de OLEDB y después de instalarlos y probar “con la conexión ODBC” de que no funcionaba -lógico, no son los adecuados- desinstalé los drivers de OLEDB y usé una cadena de conexión diferente que en mi equipo sí funcionaba (sin los drivers de VFP), pero no en el equipo de mi amigo que aún tenía los drivers de VFP que en su día instaló…

Para tu información la cadena que inicialmente estaba usando (y la que funciona en el equipo de mi colega) es esta:

"Driver={Microsoft Visual FoxPro Driver};
SourceType=DBF;
SourceDB=" & sBase & ";"

Y la otra que probé y a mi sí me funcionó es esta otra:

"Driver={Microsoft dBASE Driver (*.dbf)};
DriverID=277;
Dbq=" & sBase & ";"

La cuestión es que la de Visual FoxPro Driver a mi no me iba y la de dBASE driver no le iba a mi colega Manolo (le da el error de la figura 1).

error dBASE en equipo Manolo

Figura 1. Error del controlador/driver dBASE

Así que… tenía que hacer algo para usar uno en un equipo y otro en el otro… y antes de ponerme a saber el nombre del equipo y demás, me dije… jum! esta vez voy a probar primero lo más simple y después ya veré si me tengo que complicar la vida con otras cosas.

Y lo más simple para mi es: ¡probar si puede conectar con una cadena de conexión y si no puede, entonces probar otra! y…

(Ahora, al escribir esto último me recuerda mis tiempos de programador de Quick BASIC y el uso y "mal uso" de ON ERROR RESUME NEXT o lo que es lo mismo: si se produce un error que continúe girando el mundo… ¡hasta que se pare! jaja… en fin…)

Y eso he hecho y eso es lo que me funciona, mi colega aún no lo habrá probado, pero seguro que a él también le funciona; así que… si funciona… ¡todos contentos! 🙂

(y sobre todo, él puede seguir trabajando, yo no, pero él sí jeje)

Y este es el código que he usado (por ahora en Visual Basic .NET ya que mis proyectos los suelo hacer siempre para Visual Basic -salvo excepciones).

 

El código de la función LeerBases(path) para Visual Basic .NET

Public Shared Function LeerBases(ByVal dirDBF As DirectoryInfo) As DataSet
    Datos = New DataSet

    Dim sBase As String = dirDBF.FullName
    Dim sConn As String

    Dim ficsDbf() As FileInfo = dirDBF.GetFiles("*.dbf")
    If ficsDbf.Length = 0 Then Return Datos

    ' Utilizar varias conexiones y probar con las siguientes si da error (14/Abr/15)
    Dim cadenasConexión() As String = {"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" & sBase & ";",
                                       "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & sBase & ";"}

    Dim intentosConexion As Integer = 0
    Dim hayError As Boolean = False
    Dim mensajeError As String = ""

    Do
        sConn = cadenasConexión(intentosConexion)

        Using dbConn As New System.Data.Odbc.OdbcConnection(sConn)
            Try
                dbConn.Open()

                For Each fi As FileInfo In ficsDbf
                    Dim sSelect As String = "SELECT * FROM " & fi.Name

                    Dim da As New System.Data.Odbc.OdbcDataAdapter(sSelect, dbConn)
                    Dim dt As New DataTable

                    da.Fill(dt)
                    If dt.Rows.Count > 0 Then
                        Datos.Tables.Add(dt)
                    End If
                Next

                dbConn.Close()

                hayError = False

                ' Salir del bucle,
                ' no sea que haya más opciones de conectar y no es plan...
                Exit Do

            Catch ex As Exception
                mensajeError = _
                    "Error al abrir la base de datos" & vbCrLf &
                    ex.Message & vbCrLf &
                    "Usando: '" & cadenasConexión(intentosConexion) & "'"
                hayError = True

                ' Este es el mensaje de error que me muestra:
                ' ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
            End Try
        End Using

        intentosConexion += 1
    Loop While intentosConexion < cadenasConexión.Length

    If hayError Then
        System.Windows.Forms.MessageBox.Show(mensajeError,
                                             "Error al conectar a los datos de DBF",
                                             System.Windows.Forms.MessageBoxButtons.OK,
                                             System.Windows.Forms.MessageBoxIcon.Exclamation)
    End If

    Return Datos
End Function


 

Y esto es todo amigos… 🙂

Espero que te sea de utilidad y que si así lo es, me invites a un té o un refresco… y como va a ser complicado que nos veamos para esa invitación (y no es plan de esperar a que eso ocurra en otra vida), puedes invitarme usando el botón de Donar ese que tengo en mi blog, allí, arriba a la derecha o en mi sitio, sí, ese que está allí arriba, donde dice eso de Donativo para el sitio de elGuille.

Gracias.

 

Nos vemos.

Guillermo

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

http://www.elguille.info/NET/ADONET/probar-varias-cadenas-de-conexion-si-una-da-error-y-no-morir-en-el-intento.aspx

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

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 🙂 )