ADO.NET SCOPE_IDENTITY() Возвращает NULL

81
25 декабря 2021, 21:50

Что-то всё работало, а потом поломався! Данными база заполнена. Всё работало. Запрос Get_Kod_Zakaz возвращает null, в SQL работают запросы.

  private void Load_Form(object sender, EventArgs e)
        {
            SqlConnection conK = Util.ConnectBD.Get_KDB();
            SqlParameter Kod_Sotr = new SqlParameter("@Kod_S", Proxy.Author_Class.Get_Kod_Sotr());
            SqlCommand Insert_Zakaz = new SqlCommand("INSERT INTO Zakaz (Status, Kod_Sotr) values (5, @Kod_S)", conK);
            Insert_Zakaz.Parameters.Add(Kod_Sotr);
            SqlCommand Get_Kod_Zakaz = new SqlCommand("SELECT SCOPE_IDENTITY()", conK);
            Insert_Zakaz.ExecuteNonQuery();
            kod_z = Convert.ToInt32(Get_Kod_Zakaz.ExecuteScalar());
            //при запуске добавлять запись в таблицу заказов
        }
Answer 1

Ну, визуально, вроде, все верно.

Проверьте, есть ли в данной таблице колонка с типом IDENTITY. Идентификатор могу отключить.

Answer 2
SqlCommand Insert_Zakaz = new SqlCommand("INSERT INTO Zakaz (Status, Kod_Sotr) values (5, @Kod_S)", conK); 

в этой строке значения должны содержать ' ' Values ('5', '@Kod_S')"

Answer 3

Спасибо всем, кто откликнулся! Решить проблему помогло использование IDENT_CURRENT('имя_таблицы').

Как я узнала из интернета, что при использовании SCOPE_IDENTITY() возникают проблемы, т.к. эта функция берёт идентификатор из всех таблиц. Возможно, там происходят ещё какие-либо процессы, о которых я не знаю. Хотя, вроде всё работало, да и других действий с БД на момент исполнения этого метода не должно быть.

Кому интересно, можете почитать: https://docs.microsoft.com/ru-ru/sql/t-sql/functions/scope-identity-transact-sql?view=sql-server-ver15

READ ALSO
Смена сцены приводит к искажению виджета

Смена сцены приводит к искажению виджета

Когда выбираю в меню виджет интеграции с картами он выглядит так:

80
C# WPF Window открыть, после закрытия

C# WPF Window открыть, после закрытия

Есть класс производый от Window, который закрывается при помощи методаClose()

86
Проблема с выводом текста

Проблема с выводом текста

Ситуация следующая есть jsonФайл лежит в Assets/Json/file

91
Записать php файл с текстом "$_SERVER text" через phpseclib: SSH2

Записать php файл с текстом "$_SERVER text" через phpseclib: SSH2

Необходимо создать файл "indexphp" в сессии ssh

211