Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak uzyskać dane BLOB za pomocą Oracle ODBC?

Nie jestem zaznajomiony z programowaniem ODBC, ale na pierwszy rzut oka widzę, że zakładasz, że długość danych jest wielokrotnością rozmiaru bufora. Nie ma jednak gwarancji, że ostatni odczyt zostanie zwrócony dokładnie 500 bajtów danych.

Powinieneś napisać coś takiego. Może:

  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;

Poświęć kilka minut na sprawdzenie Korzystanie z długości /Wartości wskaźnika aby sprawdzić, jak długość/wartość wskaźnika jest używany.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. podzapytanie zwraca więcej niż jeden wiersz

  2. Jak wyczyścić wszystkie elementy z pamięci podręcznej w Oracle

  3. Wstaw znacznik czasu z JdbcTemplate w bazie danych Oracle (ORA-01858)

  4. Zestawy z jednej tabeli, pogrupowane według kolumny

  5. Oracle - Clone table - Struktura, ograniczenia danych i wszystko