Como insertar imagenes en una base de datos SQL CE

Hace tiempo me vi en la necesidad de insertar imágenes dentro de un campo en una base de datos de Sql CE, algo que resulta relativamente sencillo ha resultado ser algo no muy conocido, (y desde mi punto de vista proco práctico) ya que me estan llegando de nuevo consultas sobre como se podría hacer, así que para aquellos que lo necesitéis (antes o después ocurrirá) aquí os dejo el ejemplo y podréis encontrar la solución completa con su código fuente en el enlace adjunto al final.

//Cargamos la imagen en un objeto tipo Image
Image dibujo = new Bitmap(rutaAplicacion + @»Imagen.bmp»);

//Creamos un stream en memoria para guardar la imagen
MemoryStream memStream = new MemoryStream();

//Guardamos la imagen en nuestro stream especificando el formato (jpg,bmp…) atentos al parámetro ImageFormat
dibujo.Save(memStream,System.Drawing.Imaging.ImageFormat.Bmp);

//Guardamos el stream en un array de bytes
Byte[ ] dibujoByteArray = memStream.GetBuffer();

//Declaramos y abrimos la conexión con la base de datos donde la variable de conexión especifica el path de nuestro archivo sdf
SqlCeConnection conexion = new SqlCeConnection(«Data source=» + cadenaConexion);

conexion.Open();

//Creamos el comando SQL para insertar, atentos al parámetro @Imagen
string comandoSQL = «INSERT INTO Cliente (No,Nombre,Imagen) VALUES (1,’PACO’,@Imagen)»;

SqlCeCommand comando = new SqlCeCommand(comandoSQL, conexion);

//Asignamos el array de bytes al parametro @Imagen
comando.Parameters.Add(«@Imagen», dibujoByteArray);

//Ejecutamos y listo!… sed buenos y poner los chequeos…


comando.ExecuteNonQuery();


conexion.Close();


 


Por supuesto si conoceis algún modo mejor de poder hacer esto, o algún otro método alternativo no dudeís en hacermelo llegar!!


Aquí os dejo el enlace,


Un saludo a todos desde MobileNUG
José Antonio


Mobile .NET Users Group


 


 

Desarrollando un Cliente FTP para Compact Framework 2.0

Aunque ya tenemos aquí la nueva versión de CF 3.5 que mejora en gran medida el tema de las comunicaciones, aún nos vemos obligados muchas veces a tener que trabajar con su hermano pequeño el Compact Framework 2.0, y por supuesto no es nada raro el tener que utilizar servidores FTP para transferir archivos, descargarlos etc. (a pesar de ser un metodo nada recomendado por motivos de seguridad que no explicare en estos momentos ) si que es cierto que es una forma muy comoda de enviar información cuando no tenemos otro modo de hacerlo (no podemos colgar ninguna aplicación en el servidor, abrir un servicio web o similares).


Aquí os dejo un ejemplo mostrando como podemos utilizar crear nuestra propia clase MobileNug.Net.ClienteFTP para integrarla en nuestras aplicaciones moviles.


/******************************************     Codigo C#          *************************************************/
using MobileNug.Net;
(…)


ClienteFTP clienteFtp;
clienteFtp = new ClienteFTP();
clienteFtp.Host = «192.168.0.xxx»;
clienteFtp.Username =
«anonymous»;
clienteFtp.Password =
«»;


try
{
    clienteFtp.Ejecutar_FTP(
ClienteFTP.Comando.enviar,
                                               
@»Program FilesPrueba_MnugNETClienteFTParchivo.txt»);
}
catch (Exception ex)
{
   
MessageBox.Show(ex.Message);
}


(…)
 /****************************************************************************************************************/


 


/******************************************     Codigo VB.net          *************************************************/


Imports MobileNug.Net


Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
Dim clienteFtp As New ClienteFTP()
  clienteFtp.Host =
«192.168.0.xxx» ‘TODO: Poner aqui el host del servidor FTP
 
clienteFtp.Username = «anonymous» ‘TODO: Poner aqui el nombre de usuario
 
clienteFtp.Password = «» ‘TODO: Poner aqui el pass
  
 
Try
   
clienteFtp.Ejecutar_FTP(MobileNug.Net.ClienteFTP.Comando.enviar, «nombrearchivo.txt»)
 
Catch ex As Exception
    MessageBox.Show(ex.Message)
 
End Try
End Sub
End
Class

 /***********************************************************************************************************************/


En el siguiente enlace podréis encontrar la solución completa, inclyendo el código fuente de la clase MobileNUG.Net.ClienteFTP


Si la utilizais recordar que hay que tunearla… agregar un control de errores en condiciones, y ampliarla con lo que necesiteis si la vais a utilizar en una aplicación seria.


Espero que os sea útil, y por supuesto si la mejorais o agregáis nuevas funcionalidades no dudeis en remitirlas a la dirección de correo de mobilenug (la encontraréis en la web de la comunidad), estaremos encantados de re-publicarla y agregaros como colaboradores.


Un saludo a todos
José Antonio


Mobile .NET Users Group


 

Aprovisionando bases de datos SQL CE con Integration Services

No hace mucho me preguntaron por la posibilidad de generar una base de datos para SQL Server CE desde un equipo PC para posteriormente pasarla a un parque de dispositivos móviles.


Esto en un principio no me pareció extremadamente útil hasta que vino la correspondiente explicación, el tremendo volumen de datos que tenían que cargar (tremendo tratándose de una base de datos para un dispositivo móvil claro), y que todos los equipos iban cargados con la misma información.


Por lo que me resulto un tema interesante, y tras darle un par de vueltas… pensando en la posibilidad de hacer alguna herramienta que nos permitiese hacerlo me di cuenta de la pérdida de tiempo en la que estaba a punto de caer… ¡pero si SQL Server Integration Services ya lo hace!…. me puse manos al a obra, y tras probar el típico asistente para crear un paquete de transacciones, caí con mi gozo en un pozo al no permitirme hacerlo… así que tocó hacerlo a manita, en las siguientes líneas he puesto un “paso a paso” basado en hechos reales… jejeje, digo reales ya que trabajo con Microsoft Dynamics y el tutorial y las pruebas se han hecho trabajando contra una base de datos de Microsoft Dynamics NAV 5.0 SP1, pero sirve para cualquier tipo de origen de datos, desde cualquier base de datos que soporte ODBC, sobre SQL Server o cualquiera de los orígenes de datos soportados por las herramientas de SQL Server Integration Services… XML, archivos de texto, Excel, Access…


Integrando SSIS con SQL CE


Para poder explicar como hacer esto he preparado una pequeña guia en la cual explico como crear una solución desde cero en Visual Studio que podreís descargar de aquí ya que es un poco amplia para colgarla directamente en el blog.


Espero que os resulte útil!!


Un saludo a todos
José Antonio


Mobile .NET Users Group