Amar chand123 Ответов: 1

Проблема в autonumber в C# winform by sqldatabase


я пробую AutoNumber в текстовом поле из SqlDataBase,
но проблема возникает когда автономер достигает числа 10 после числа мой код автономера показывает каждый раз число 10

когда я использую Debug

var cont = cd.ExecuteScalar();
Var cout show Value = 9


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

Мой код таков:
// AutoNumber
        private void Autonumber()
        {
            string Query = "select MAX(ReceiptNo) from Project1";
            SqlCommand cd = new SqlCommand(Query, con);
            try
            {
                con.Open();
                var cont = cd.ExecuteScalar();
                var count = (cont == DBNull.Value ? 1 : Convert.ToInt32(cont) + 1);
                txtRecpt.Text = count.ToString();
            }

            finally
            {
                con.Close();
            }
        }

F-ES Sitecore

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

Amar chand123

Проблема решена, ошибка в типе данных ReceiptNo', когда я изменить тип данных столбца в проблему 'ИНТ' решена

1 Ответов

Рейтинг:
4

OriginalGriff

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

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

Подумайте об этом: SQL Server-это многопользовательская система: это означает, что несколько приложений на нескольких компьютерах могут одновременно обращаться к одной и той же базе данных.
Предположим, вы вызываете Autonumber и получаете "123". Я также вызываю Autonumber со своего компьютера и также получаю "123", потому что база данных еще не была изменена.
Один из пользователей вставит новую запись правильно, один из нас-нет. И если какая-либо другая информация ссылается на этот автономер (например, линии счетов-фактур, ссылающиеся на счет-фактуру), то ваша информация "смешивается" с моей, потому что они оба используют один и тот же "автономер".

Вместо этого используйте столбец идентификаторов в своей базе данных, и пусть SQL позаботится об этом: вы вставляете строку, она выделяет уникальный автономер, и ничего никогда не перепутается.

Не пытайтесь сделать это сами, это закончится слезами.