[Jde-dev] Problemas guardando y recuperando bytes en BLOB (mysql)
David Lobato
dav.lobato en gmail.com
Lun Ene 25 15:30:13 CET 2010
RespondÃa a esta pregunta en otro correo. Adjunto la respuesta, que creo se
aplica a este caso también.
AsÃ, sin probar nada, yo diria que hacer un memmove del std::vector
directamente es peligroso, ya que una vez serializado el objeto, la
representación ya no es portable, desde luego no entre máquinas y quizá
tampoco entre versiones de la libstdc++.
Yo cogerÃa los datos 'a pelo', los serializarÃa y para recuperarlos crearÃa
un vector nuevo inizializandolo con los datos leidos desde fichero.
Para serializar si tienes:
std::vector<int> v;
Puedes acceder a los datos asÃ:
&v[0]
Según la stl se almacenan de manera contigua, por lo que con dicha operación
obtienes un 'int*'.
Usando la operación size del vector puedes obtener la longitud del vector y
usarlo en un write() o en un memmove()
Para 'desserializar':
Primero lees el 'int*' e inicializas el vector asÃ:
int *arrayInt;
std::vector<int> v (arrayInt, arrayInt + nElements );
Por int pon el tipo de datos que quieras, teniendo en cuenta que para
serializarlo/desserializarlo necesitaras algún mecanismo (write/read).
Espero que sea de ayuda.
David.
2010/1/18 Roberto Calvo <rocapal en libresoft.es>
>
> Buenas,
>
> Me está dando algunos problemas al meter un chorro de bytes en un BLOB
> de mysql. Os comento el código y el problema a ver si veis donde puede
> estar.
>
> La chica está en [1]. En el método "RecordingLog::saveRecordingEvent" se
> guarda el chorro de bytes en el BLOB. Como en mysql todo es un string,
> lo que hago es meter cada BYTE, en un BYTE del String, con memcpy.
>
> Luego lo recupero con el método "RecordingLog::getEventsOfRecording",
> exactamente en esta lÃnea:
>
> event->image = static_cast<jderobot::ByteSeq> (row["image_file"]);
>
> Pero es justo donde falla porque parece ser que no sabe hacer el cast.
>
> No sé que se me está pasando ...
>
> un saludete!!
>
> [1]
>
> http://svn.jderobot.org/jderobot/trunk/src/components/recordingserver/libRecordingLog/RecordingLog.cpp
>
>
> --
> Roberto Calvo Palomino | Libre Software Engineering Lab (GSyC)
> Tel: (+34) 91 488 85 23 | Universidad Rey Juan Carlos
> rocapal en libresoft.es | Edif. Departamental II - Despacho 116
> http://libresoft.es/ | c/Tulipán s/n 28933 Móstoles (Madrid)
>
> GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg
>
> _______________________________________________
> Jde-developers mailing list
> Jde-developers en gsyc.es
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20100125/bf8ff568/attachment.htm
More information about the Jde-developers
mailing list