когда sqlchars и когда sqlstring? - PullRequest
       1

когда sqlchars и когда sqlstring?

3 голосов
/ 10 ноября 2011

Я разрабатываю приложение CLR в c #.Я сталкиваюсь с типом SqlChars и SqlString.но я не вижу разницы между ними.Когда использовать SqlChars и когда использовать SqlString?

спасибо

Ответы [ 3 ]

5 голосов
/ 04 февраля 2014

Я прошу прощения за дублирование некоторых данных в выбранном в данный момент ответе, но я хотел попытаться дать небольшое пояснение.

Сначала краткий ответ:

Мои рекомендации поиспользовать SqlChars против SqlString связано с вашим намерением.Если вы не планируете изменять входную строку, используйте SqlString.Если вам нужно манипулировать вводом, используйте SqlChars.

А теперь некоторые подробности о том, как я туда попал:

Из документации видно, что SqlChars является класс и SqlString - это структура .Класс против структуры выходит за рамки этого ответа, но достаточно сказать, что структуры имеют меньший вес.Вы также можете видеть, что SqlChars является изменяемым (вы можете изменить его, не требуя нового выделения памяти).Я не могу найти документацию, относящуюся к ограничению размера для SqlString, и у меня не было проблем с использованием данных, больших, чем VARCHAR (8000) / NVARCHAR (4000) с SqlString.Если у вас возникли проблемы, убедитесь, что в вашем коде CLR MaxByteSize = -1.

Приведенная ниже информация взята из документации MSDN Типы SQL *1022*.

Классы.

SqlChars - это изменяемый ссылочный тип, который переносит массив Char или экземпляр SqlString.

Структуры

SqlString - Представляет поток символов переменной длины для хранения или извлечения из базы данных.SqlString имеет базовую структуру данных, отличную от соответствующего типа данных .NET Framework String.

4 голосов
/ 10 ноября 2011

- SQL String - это sqltype в .net framework. Он представляет собой поток символов переменной длины для хранения или извлечения из базы данных.

- SQLChar - это изменяемый ссылочный тип, который переносит массив Char или экземпляр SqlString.SqlChar это класс.И то, что вы обнаружили, верно, что sqlstring ограничен nvarchar (4000), а sqlchars - это nvarchar (max).(Но мы можем определить размер, точность и масштаб параметров и возвращаемых типов, используя атрибут SqlFacet.)

0 голосов
/ 01 января 2014

позвольте мне процитировать от г-на. alastair: sqlchar менее требователен к ресурсам системной памяти, поскольку для него не требуется блок непрерывной природы, как это делает sqlstring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...