sql >> Databasteknik >  >> RDS >> Oracle

Hur man får BLOB-data med Oracle ODBC

Jag är inte bekant med ODBC-programmering, men vid första anblicken är ett problem jag kan se att du antar att din datalängd är flera av din buffertstorlek. Men den senaste läsningen är inte garanterad att returnera exakt 500 byte data.

Du borde skriva något sådant. Kanske:

  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;

Vänligen ägna några minuter åt att granska Using Length /Indikatorvärden för att kontrollera hur längd/indikatorvärde används.




  1. Bitwise Flags övergivna?

  2. Hur arbetar du med Oracle-paket i en kollaborativ, versionskontrollerad miljö?

  3. SQL:Jämför två räkningar från olika tabeller

  4. Hur man hanterar rumstillgänglighet baserat på dagars eller månaders ockupation