Чтение VARBINARY (MAX) из SQL Server в C#
мне нужно прочитать строку данных из SQL Server 2008. Тип одного из столбцов -VARBINARY(MAX)
. В C# я хочу использовать параметр out для его чтения (и данный сценарий в основном удовлетворяет потребностям).
но мне нужно указать размер переменной параметра для заполнения переменной C#. Здесь я предполагаю, что 8000 достаточно... Но кто знает:--3-->
database.AddOutParameter(command, "vbCertificate", DbType.Binary, 8000);
поэтому вопросы:
- каков размер MAX in number для SQL Server 2008?
- это нормально использовать параметр out для этого сценария?
3 ответов
как сказал @marc_s, я просто хочу что-то добавить.
существует два типа данных
бинарные [(n)]
двоичные данные фиксированной длины длиной n байт, где n-значение от 1 до 8000. Размер хранилища-n байт.
тип varbinary [ ( Н | Макс) ]
двоичные данные переменной длины. n может быть значением от 1 до 8000. Макс указывает, что максимальный размер хранилища равен 2^31-1 (равно int.MaxValue т. е. 2,147,483,647) байт. Размер хранилища-это фактическая длина введенных данных + 2 байта. Введенные данные могут иметь длину 0 байт.
Если вы указываете max, то ваша проблема должна быть с varbinary вместо binary
максимальный размер для VARBINARY(MAX)
2 ГБ данных - 2'147'483'648 байт.
в вашем случае, при определении его в C#, я бы рекомендовал использовать int.MaxValue
как значение для предоставления.
и да, если вы хотите получить массив байтов обратно из таблицы SQL Server 2008, то вы можете определенно использовать
Я не видел явного размера нигде для Макса. Вы пробовали выполнить это с помощью DbType.Объект? Это определено в msdn как общий тип для любого типа, не определенного явно. Я попробую и посмотрю, сработает или нет. В противном случае я бы, вероятно, придерживался DbType.Двоичный, как вы выбрали.