2010-03-15 4 views
2

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

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

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

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

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

+1

Какой тип БД это, SQL Server? Кроме того, какой тип поля, Nvarchar? –

ответ

3

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

myTextBox.MaxLength = 50 

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

+0

Возможно, вы также можете сделать это для форм ASP.Net, хотя я не проверял .... – Calanus

+0

это решение плюс nvarchar, как и другие предложения, и любая ситуация должна быть хорошо позабочена. +1 для примера форм. – IAbstract

3

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

1

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

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

Смежные вопросы