sql >> Database >  >> RDS >> Oracle

Hoe BLOB-gegevens te krijgen met Oracle ODBC

Ik ben niet bekend met ODBC-programmering, maar op het eerste gezicht is een probleem dat ik kan zien, dat je ervan uitgaat dat je gegevenslengte een veelvoud is van je buffergrootte. Maar het laatst gelezen is niet gegarandeerd precies 500 bytes aan gegevens.

Zoiets zou je moeten schrijven. Misschien:

  string str;
  SQLCHAR buf[500];
  SQLLEN cbLeft;      // #bytes remained

  while ((SQL_SUCCEEDED(SQLGetData(StmtHandle, 
                                   colnum, 
                                   SQL_C_BINARY, 
                                   buf, 
                                   sizeof(buf),
                                   &cbLeft))))
  //                               ^^^^^^^
  {
          string data(reinterpret_cast< const char* >(buf),
                      reinterpret_cast< const char* >(buf)
                      + cbLeft);
          //            ^^^^^^
          str = str + data;

Neem een ​​paar minuten de tijd om Gebruikslengte te bekijken /Indicator Waarden om te controleren hoe de lengte/indicatorwaarde wordt gebruikt.




  1. Hoe maak ik online verbinding met de MySQL-database vanaf een andere pc? VB.NET

  2. Slaapstand Jpa - beperking schending uitzondering op primaire sleutel (reeks)

  3. Waarom is PostgreSQL-arraytoegang zo veel sneller in C dan in PL/pgSQL?

  4. Synchroniseer de lokale Microsoft MySQL-database met de externe mysql-database die dagelijks wordt gepland