denis.larocque Ответов: 1

C# SQL как показать в метке инкрементное число из bd, когда оно буквенно-цифровое


Я хочу, чтобы в метке появилось инкрементное поле, которое находится в sql bd, я хочу иметь следующий #.
пример: в моем bd я закончил с AA002, который хочу показать на этикетке AA003.

Что я уже пробовал:

Объект sqlconnection СК =Новое sqlconnection("источник данных=\7KH9R22 папку\sqlexpress;Комплексная безопасность=true;в начальный каталог=РГП");
//ничего не появляется при добавлении +1, но когда я удаляю +1, это показывает текущий последний # в bd

SqlCommand cmd = new SqlCommand ("SELECT MAX (CLIENTno)+1 FROM CLIENT", sc);


УМК.CommandType = CommandType. Text;
УМК.Соединение.Открыть();
объект o = cmd.Executescalar так();
if (o != DBNull.Значение) label16.Текст = о. Метод toString();
СК.Рядом();

1 Ответов

Рейтинг:
6

OriginalGriff

Не.
Это очень, очень плохая идея - и тебе она не нужна.

SQL Server-это многопользовательская среда, а это означает, что когда-либо "простаивающий" пользователь будет показывать один и тот же "следующий" номер. Так кто же его получит? Первым нужно сделать вставку. Что происходит с остальными? Что ж, если Вам ПОВЕЗЕТ, приложение выйдет из строя, и ваши пользователи возненавидят вас.
Если вам не повезло, ваша база данных пополняется противоречивыми данными, и вы получаете ужасную работу по сортировке всего этого, прежде чем ваши клиенты начнут подавать на вас в суд за выставление счетов за товары, которые они никогда не заказывали, или товары, которые не прибыли, потому что вы отправили их в другое место.

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