(MS SQL2k)как содержимое поля типа TEXT считать в byte []

leo Resh
Дата: 27.10.2005 15:53:22
К сожалению, у меня существуют бинарные данные, "засунутые" в поле типа TEXT.
Каким способом можно содержимое этого поля "как есть" считать в массив байт?
Артем1
Дата: 27.10.2005 15:57:59
SqlBinary, возвращаемый методом SqlDataReader.GetSqlBinary

Про метод
Gets the value of the specified column as a SqlBinary.
Про структуру
Represents a variable-length stream of binary data to be stored in or retrieved from a database.

Подробное описание SqlBinary есть в msdn
leo Resh
Дата: 27.10.2005 16:07:51
Увы, на строке
leo Resh
Дата: 27.10.2005 16:10:54
Увы, на строке
SqlBinary mySBN = myReader.GetSqlBinary(i);
Вылетает exception
Specified cast is not valid
Артем1
Дата: 27.10.2005 16:35:25
А по простому получается?
 byte[] b =  (byte[]) dr["img_data"] 
dr - datareader
leo Resh
Дата: 27.10.2005 16:40:08
Аналогичный exception.
Артем1
Дата: 27.10.2005 16:45:00
leo Resh
Аналогичный exception.


Там в поле не Null случаем?
Артем1
Дата: 27.10.2005 16:51:37
Извиняюсь, сразу не посмотрел. Так я извлекаю поля типа image. С text-ом надо попробовать. Возможно, можно прочитать просто как GetString ? А потом уже в массив байтов?
leo Resh
Дата: 27.10.2005 17:00:05
Дело в том, что GetString как и GetChars по ходу дела преобразует содержимое в Unicode, в этом-то и проблема.
Если посмотреть результат запроса:
select 
convert(varbinary(100),substring(myDamnedTextField,1,100))
from ....
и сравнить увиденное с тем, что показывает отладчик в результате GetString (или GetChars), то разница заметна очень сильно...
Артем1
Дата: 28.10.2005 08:12:20
Попробовал сегодня. Кроме как приводя конвертом к варбинари в запросе не получается. Так что видимо только так, ИМХО.