SqlCommand Параметры путаницы

У меня есть следующая строка кода:

sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int, 4).Value = linkID;

Но я немного запутался в использовании size. Является ли это выражением, что его 4 байта? Или длина 4, поэтому 1234 приемлема, но 12345 слишком велика?

Ответы

Ответ 1

Для типов с размером исправлений вы должны опустить этот аргумент, просто:

sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int).Value = linkID;

Аргумент size имеет значение только для параметров с типом, который может иметь переменный размер, например varchar, nvarchar и т.д.

Ответ 2

Размер для байта составляет 4 байта.

См. класс DbParameter в msd n для получения дополнительной информации. Это актуально, поскольку SqlCeParameter реализует DbParameter

В этом разделе приведен следующий раздел:

Свойство Size используется для двоичных и строковых типов.

Для нестандартных типов данных и строковых данных ANSI свойство Size относится к числу байтов. Для строковых данных Unicode размер относится к количество символов. Счет для строк не включает завершающий символ.

Для типов данных переменной длины, Size описывает максимальное количество данные для передачи на сервер. Например, для строки Unicode значение. Размер может использоваться для ограничения объема данных, отправленных на сервер до первой сотни символов.

Посмотрите https://gist.github.com/1932766 для реализации свойства Size.

Ответ 3

Это 4 байта, 32 бит. Это 32-битное целое число.

Ответ 4

Если вы собираетесь на int, я думаю, что это неважно, какой размер.

поэтому код будет

sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int).Value = linkID; 

on для varchar, navarchar, где размер матера, вам нужно указать размер в вас .net-код i.e в параметре