lunes, 19 de julio de 2010

Mysql .NET Connector

Buenas, continuamos con un tema interesante.
Yo siempre he dicho que uno no ha limitarse a conocer una única tecnología (ya lo que suele ocurrir es que en todos los sitios no trabajen con esa tecnología), sino hay que saber un poco de todo y no casarse con un determinado programa, lenguaje o tecnología. Es más la obsolescencia puede hacer que si te centras en aprender una única tecnología, puede ocurrir que veas que cada vez es menos demandada por el mercado y tus conocimientos queden desfasados por el mero paso del tiempo. Por ejemplo a día de hoy es difícil encontrar aplicaciones escritas Turbo Pascal, por ejemplo, cuando hará 20 años sería el no va más en lenguajes de programación. Otra cosa es que en la facultad sólo se enseñe Turbo Pascal y nada más. Ni Java ni .NET y luego has de aprender esos lenguajes a marchas forzadas, pero eso es normal. Si yo te contará... Acabé económicas sin saber sin saber ni liquidar un Iva...


Bueno, voy a la chicha. Crear aplicaciones en Visual Studio 2008 y conectarse a una base de datos utilizando otro proveedor de datos de .NET Framework distinto a SQL Server siempre ha sido posible. De hecho si no me equivoco, por ejemplo, en la Diputación de Álava existe una aplicación para la confección de impuestos desarrollada usando el Visual Studio 2008 (lo deduzco porque pide instalar el .NET Framework 3.51), pues bien usa una base de datos Access y se conecta a través del proveedor de datos de .NET Framework para OLEDB. No es que sea tan óptimo como usar una base de datos SQL, pero funciona a la perfección.
Pues bien existe también el proveedor para MySql, con el que conectarse a bases de datos en MySql y es gratuito. De hecho viene una versión con un instalador que automáticamente te configura el Visual Studio (por ahora sólo hasta el Visual Studio 2008, ya que para el 2010 se liberará en breve), y aparte está la versión con el código y la dll. Anteriormente conectarse a MySql a través de del Visual Studio no era muy eficiente, ya que se había de utilizar el proveedor genérico, es decir, ODBC. A diferencia ahora el proceso es tan sencillo como escribir correctamente la cadena de conexión. Podemos crear incluso datasets tipados y aprovechar todas las ventajas que nos proporcionada el acceso desconectado a datos (pero LINQToSql no funciona) al igual que hacemos con bases de datos en SQL Server.
Pues bien en el siguiente video no sólo voy a explicar cómo crear una aplicación en Visual Studio que se conecte a MySql, sino que voy a explicar desde 0 la descarga de MySql, configuración, creación de una base de datos.





Pues bien, si añadimos a la aplicación un Archivo de configuración de aplicaciones llamado app.config, que no es más que un archivo xml, en que además de configurar un montón de opciones de la aplicación, nos permite almacenar cadenas de conexión y así en el caso que algún día necesitemos tener que cambiar el proveedor de datos y la cadena de conexión, por ejemplo, sería tan sencillo como cambiarlo en el archivo app.config y estos cambios se aplicarán a toda la aplicación -siempre que utilicemos los datos del archivo app.config y no una cadena de conexión en cada formulario porque puede ser un caos para mantenimiento de la aplicación-.

Es más, gracias a las clases del Namespace System.Data.Common podemos hacer que el código de la aplicación sea independiente del proveedor de datos. Que es Oracle hoy pero mañana será MySql, pues ningún problema, y así escribimos código independiente del proveedor de datos, por lo que si algún día cambia, con sólo cambiar una línea en el nodo ‘connectionStrings’ del archivo app.config la aplicación ya estará preparada.

Pues bien aquí el link con el código de la solución con los 2 proyectos realizados.

Ahora un poco del código de una aplicación para Windows en C# que se conecta a una base de datos llamada db, que está en MySql, pero también está preparado para conectarse a la misma base de datos db en SQL Server, por si el cliente algún día decide cambiar.
Primero en el archivo app.config tendríamos 2 cadenas de conexión, una para cada proveedor:









Por ahora sólo uso la de MySql. Y en el evento Load de mi formulario obtengo la cadena de conexión y el nombre del proveedor que almaceno en 2 variables cadena.
Imports System.Data.Common
Imports System.Configuration
'obtengo el nombre y el proveedor
Dim proveedor As String = ConfigurationManager.ConnectionStrings("CadenaConexion").ProviderName
Dim cadena As String = ConfigurationManager.ConnectionStrings("CadenaConexion").ConnectionString

'creo una factoría de base de datos para trabajar con el proveedor de datos que queramos
Dim factory As DbProviderFactory = DbProviderFactories.GetFactory(proveedor)
'creo la conexion
Using conexion As DbConnection = factory.CreateConnection()
'asigno la cadena
conexion.ConnectionString = cadena

'creo un comando
Dim comando As DbCommand = conexion.CreateCommand
comando.CommandText =
"select * from clientes"

'creo el dataadapter
Dim da As DbDataAdapter = factory.CreateDataAdapter
'selecciono el SelectCommand

da.SelectCommand = comando
Dim ds As New DataSet
'relleno el dataset no tipado
da.Fill(ds)

'muestro los datos en el datagrid
DataGridView1.DataSource = ds.Tables(0)

End Using

sábado, 3 de julio de 2010

Novedades Verano

Hoy voy a tratar varias novedades que han aparecido recientemente:

Desde el punto de vista fiscal, es el programa de ayuda para el impuesto de sociedades 2009 de la AEAT. Como sabemos aquellas empresas que cerraron su ejercicio a 31/12/2009 tienen de plazo hasta el lunes 26 de julio. Eso se suma a que el 20 de julio es el plazo máximo para los impuestos de 2º Trimestre o 6M. No olvidemos que para la Diputación Foral de Bizkaia (Bizkaibai), el Gobierno de Navarra, Guipúzcoa y la Diputación de Álava tienen sus propios programas para el IS. En el caso que el volumen de facturación en el 2009 superara los 7.000.000 € presentarán un impuesto a cada administración en proporción al volumen de operaciones realizadas en cada territorio. Bueno ya hablaré más sobre el IS en un post exclusivo.
Bueno este es el link a la página de descarga del programa.


La nueva versión de Visual Studio 2010, cuyas versiones Express en varios idiomas, entre ellos español, están disponibles en http://www.microsoft.com/express/downloads/. A parte se puede descargar una ISO con todas las versiones Express en la misma página. Además necesitaras el SQL Server 2008 R2 Express sí o sí, indistintamente tengas instaladas otras versiones superiores de SQL Server, para poder adjuntar bases de datos a tus proyectos y crear las instancias de usuario (lo de User Instance = true).


La versión 6.9 de la IDE para JAVA Netbeans en http://netbeans.org/ Se puede descargar para desarrollar aplicaciones para Java o para otros lenguajes de programación como c++ o php. En este link está disponible la versión de la IDE con Java JDK y Java JRE (lo equivalente a la Common Language Runtine de .NET), ideal para descargarlo todo en un único ejecutable.


Programar videojuegos con c++ y Active X era un pelín complicado, y más si no te dedicas profesionalmente. Pero hace unos años ha aparecido XNA Game Studio que ha simplificado el proceso de programación. Es una API que se descarga y se instala conjuntamente con el Visual C#, y hace que crear videojuegos profesionales sea realmente fácil. El problema es el código que no ves y que se genera automáticamente, si tienes inquietudes por saberlo todo. Aún así no había hasta ahora muchos manuales ni videos desarrollando un videojuego de principio a fin en 2D y en 3D. Afortunadamente han colgado estos vídeos en http://www.youtube.com/user/XNAMktg2#p/u que vienen con el código libre de descarga. XNA Game Studio Express es gratuito y está disponible en la misma página.