Как проверить длину поля - PullRequest
2 голосов
/ 15 марта 2010

У меня есть поле Abc в базе данных, и я хочу убедиться, что пользователь не пересекает предел поля в базе данных, поэтому я использую проверку, которая скажет: «Вы не можете ввести более 50 символов».

Теперь вопрос в том, что, поскольку память для хранения китайского, индийского и других подобных языков занимает более 1 байта, как бы я проверил длину.

Что происходит сейчас, так это то, что пользователь вводит 30 символов и получает сообщение на дисплее: «Вы не можете ввести более 50 символов».

для решения я могу увеличить размер базы данных или проверить длину байта, но это не очень хорошая идея.

Какой подход вы бы использовали, чтобы сделать это?

Ответы [ 3 ]

3 голосов
/ 15 марта 2010

Если ваш графический интерфейс в WinForms или WPF, то вы должны иметь возможность установить максимальную длину в текстовом поле, что приятно мешает людям вводить больше, чем указанное количество символов, например

myTextBox.MaxLength = 50

Но вы можете установить это в VS Designer - выберите текстовое поле и перейдите к его свойству MaxLength

3 голосов
/ 15 марта 2010

Используйте тип nvarchar в вашей БД, он ограничивает количество символов, а не количество байтов.

1 голос
/ 15 марта 2010

Если вы используете поле nvarchar .Net и SQl Server, у вас все будет в порядке Я думаю .

Nvarchar хранит 2 байта на символ в любом случае, поэтому следует разместить строку юникода .net передаст ей без проблем. (другими словами, длина в .Net и SQL измеряется в символах, а не в байтах, если вы используете Nvarchar в базе данных).

...