Nullable<Binary> Statement::GetBinaryDataInRow(unsigned int column) { Nullable<Binary> result; if (column >= _resultParams.size()) { throw DatabaseException("Error in Statement::GetDataInRow", 0, "----", "column out of range"); } if (_resultBind[column].buffer_type != MYSQL_TYPE_BLOB) { throw DatabaseException("Error in Statement::GetDataInRow", 0, "----", "column not of correct type"); } if (! (*(_resultParams[column]->IsNull()))) { if (mysql_stmt_fetch_column(_stmt, &(_resultBind[column]), column, 0) != 0) { throw DatabaseException(_stmt, "Error in GetDataInRow(Binary)"); } Binary fromdb; fromdb.AssignDataToBuffer((unsigned char *)_resultParams[column]->Buffer(), *(_resultParams[column]->BufferLength())); result = fromdb; } return result; }
void Statement::GetDataInRow(unsigned int column, Nullable<Binary> &result) { if (column >= _resultParams.size()) { throw DatabaseException("Error in Statement::GetDataInRow", 0, "----", "column out of range"); } if (! (*(_resultParams[column]->IsNull()))) { if (_resultBind[column].buffer_type == MYSQL_TYPE_TINY_BLOB) { if (*(_resultParams[column]->BufferLength()) >= 256) { throw DatabaseException("Error in Statement::GetDataInRow", 0, "----", "data too large for Blob type"); } } else if (_resultBind[column].buffer_type == MYSQL_TYPE_BLOB) { if (*(_resultParams[column]->BufferLength()) >= 64 * 1024) { throw DatabaseException("Error in Statement::GetDataInRow", 0, "----", "data too large for Blob type"); } } else if (_resultBind[column].buffer_type == MYSQL_TYPE_MEDIUM_BLOB) { if (*(_resultParams[column]->BufferLength()) >= 16 * 1024 * 1024) { throw DatabaseException("Error in Statement::GetDataInRow", 0, "----", "data too large for Medium Blob type"); } } else if (_resultBind[column].buffer_type == MYSQL_TYPE_LONG_BLOB) { if (*(_resultParams[column]->BufferLength()) >= (size_t) 4 * 1024 * 1024 * 1024) { throw DatabaseException("Error in Statement::GetDataInRow", 0, "----", "data too large for Large Blob type"); } } else { throw DatabaseException("Error in Statement::GetDataInRow<Binary>", 0, "----", "column not of correct type (should be Blob)"); } if (mysql_stmt_fetch_column(_stmt, &(_resultBind[column]), column, 0) != 0) { throw DatabaseException(_stmt, "Error in GetDataInRow<Binary>"); } Binary fromdb; fromdb.AssignDataToBuffer((unsigned char *)_resultParams[column]->Buffer(), *(_resultParams[column]->BufferLength())); result = fromdb; } else { result.ClearValue(); } }