Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да получите BLOB данни с помощта на oracle ODBC

Не съм запознат с ODBC програмирането, но на пръв поглед виждам един проблем, че приемате, че дължината на вашите данни е кратна на размера на вашия буфер. Но не е гарантирано, че последното прочитане ще се върне точно 500 байта данни.

Трябва да напишете нещо такова. Може би:

  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;

Моля, отделете няколко минути, за да прегледате Using Length /Стойности на индикатора за да проверите как дължината/стойността на индикатора се използва.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Симулация на дълготрайна заявка на Oracle DB

  2. Каскаден еквивалент на ограничение за ограничаване на Oracle в Sql Server

  3. Групиране по месеци в Oracle

  4. идентификаторът на oracle на хибернация е твърде дълъг ORA-00972

  5. Има ли Oracle SQL заявка, която обединява множество редове в един ред?