Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment obtenir des données BLOB à l'aide d'Oracle ODBC

Je ne suis pas familier avec la programmation ODBC, mais à première vue, un problème que je peux voir est que vous supposez que la longueur de vos données est multiple de la taille de votre tampon. Mais la dernière lecture n'est pas garantie de retourner exactement 500 octets de données.

Vous devriez écrire quelque chose comme ça. Peut-être :

  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;

Veuillez prendre quelques minutes pour examiner Utilisation de la longueur /Valeurs des indicateurs afin de vérifier comment la longueur/valeur de l'indicateur est utilisé.