Я пытаюсь получить сертификат, хранящийся как BLOB в базе данных Oracle, но я продолжаю получать пустой массив байтов. Вот фрагмент кода:
OracleCommand command = new OracleCommand(QUERY_GETURLS, connection);
OracleDataReader reader = null;
try
{
connection.Open();
reader = command.ExecuteReader();
while (reader.Read())
{
string organization = reader["Organization"].ToString();
string type = reader["Type"].ToString();
string url = reader["DestinationUrl"].ToString();
byte[] certificate = (byte[])reader["Certificate"];
Организация, тип и URL-адрес возвращаются в порядке, но поле сертификата всегда возвращает пустой массив байтов. Если я вручную запускаю тот же запрос к базе данных, возвращается столбец BLOB. Тип данных столбца - LONG RAW, и я использую ODP.NET.
Благодаря MethodMan я смог найти соответствующую страницу, которая показывает, какие типы данных использовать для ODP.NET:
docs.oracle.com/cd/B28359_01/win.111/b28375/featTypes.htm
Я могу использовать OracleBinary для LONG RAW. После дальнейших исследований кажется, что сообщество Oracle уходит от LONG RAW и к BLOB. Я собираюсь переключить свой тип данных столбца на BLOB и использовать массив байтов.
OracleDataReader reader
возможно,BinaryReader
будет работать или посмотрите на эту ссылку devart.com/dotconnect/oracle/articles/lob.html