[VC++/ODBC/MySQL] Werken met BLOB

Pagina: 1
Acties:

  • Pinkelmans
  • Registratie: Maart 2002
  • Laatst online: 11-02 10:15
Ik heb een probleem en kom er niet uit;
(Omgeving: Visual Studio 2005 Express, Mysql 5.1)

In een tabel zit een veld van het type BLOB. Het gaat hier om een veld met ge-encrypte data (AES_ENCRYPT).
Soms moet deze data naar een andere (fysieke) database gezet worden, maar hoe lees, en schrijf, ik een veld van het type BLOB goed in en weg?

momenteel gebruik ik:
code:
1
2
3
long len = myReader->GetBytes(tel,0,nullptr,0,0);
cli::array<unsigned char,1>^ bytearray= gcnew array<unsigned char,1>(len);
myReader->GetBytes(i, 0, bytearray, 0, len);  // i is de waarde van de lokatie van de kolomn


Zo lukt het me om alle bytes goed in te lezen. Wil ik deze (bijvoorbeeld) tonen (gescheden met een : voor duidelijkheid), wordt het iets van:
121:232:12:81, etc.

Nu wil ik deze BLOB in een andere query krijgen en weer wegschrijven in de database. Hoe doe ik dat?

Wat ik probeerde was het eerste te encoden naar ASCII via een System::Text::ASCIIEncoder, maar aangezien deze maar 128 bits ondersteund, wordt de helft dus vervangen door een ?. Dit gaat niet werken..

Is er geen andere manier? Of moet ik écht eerst decoden en dan weer terug encoden?

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Pinkelmans schreef op donderdag 12 oktober 2006 @ 18:04:
Wat ik probeerde was het eerste te encoden naar ASCII via een System::Text::ASCIIEncoder, maar aangezien deze maar 128 bits ondersteund, wordt de helft dus vervangen door een ?. Dit gaat niet werken..
Waarom moet het naar ASCII? Met ODBC weet ik het niet, maar met de MySQL client lib zou ik gewoon mysql_escape_string op de binaire data uitvoeren en het resultaat tussen quotes in een query zetten.

  • Pinkelmans
  • Registratie: Maart 2002
  • Laatst online: 11-02 10:15
Olaf van der Spek schreef op vrijdag 13 oktober 2006 @ 12:57:
[...]

Waarom moet het naar ASCII? Met ODBC weet ik het niet, maar met de MySQL client lib zou ik gewoon mysql_escape_string op de binaire data uitvoeren en het resultaat tussen quotes in een query zetten.
....
Ik ben echt niet slim bezig; ik kom hem inderdaad, eenmaal ingelezen als byte-array, direct in een ODBCCommand-Paramater gooien, aangezien die gewoon alles van het type Object accepteerd.
code:
1
command->Parameters->AddWithValue("?",byteArray);

Dankje voor het laten inzinken, haha