Как узнать значение в колонке с автоинкрементом?

355
30 июля 2017, 06:59

Есть DataTable dt. В нем создана колонка:

        DataColumn dcIndex = new DataColumn("ID");
        dcIndex.AutoIncrement = true;
        dcIndex.AutoIncrementSeed = 1;
        dcIndex.AutoIncrementStep = 1;
        dt.Columns.Add(dcIndex);

Записи как добавляются, так и удаляются. Есть возможность узнать будущее значение в данной колонке при добавлении записи?

Answer 1

Изначально при создании первой строки значение ID равно значению, указанному в свойстве DataColumn.AutoIncrementSeed и далее оно увеличивается на значение, указанное в свойстве DataColumn.AutoIncrementStep.

Следовательно, когда вы создаете новую строку

var row = table.NewRow();
Console.WriteLine(row["ID"]); // новое значение

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

Следуя этим рассуждениям у вас может возникнуть желание считать будущее значение ID как:

текущее значение + DataColumn.AutoIncrementStep

но я бы предостерег так делать т.к. нет ни какой гарантии, что после вызова метода table.NewRow() никто еще больше не создал новую строку и следовательно вычисления утратят актуальность.

Поэтому если вам нужно знать значение ID новой строки, вы можете просто создать эту строку:

var row = table.NewRow();

и добавлять (или вовсе не добавлять) ее в коллекцию table.Rows только тогда, когда это будет необходимо.

Answer 2

Значение ID присваивается базой данных при вставке. Достать его можно, например, так:

INSERT INTO Table1(fields...) VALUES (...); SELECT SCOPE_IDENTITY(); 

Выполнить такой запрос и получить значение ID можно, например, при помощи ExecuteScalar.

READ ALSO
Проверка на пустой запрос - C#

Проверка на пустой запрос - C#

У меня есть ComboBox1 и ComboBox2Данные для ComboBox берутся из LocalDB и эти два элемента управления связанны

406
Разбить строку js

Разбить строку js

Всем привет

287
Удалить option из select с помощью JS

Удалить option из select с помощью JS

Как удалить option c id="2" из select

573
Поиск и удаление строки в .txt файле js

Поиск и удаление строки в .txt файле js

Ребят, подскажите, пожалуйста, как удалить найти и удалить строку в текстовом файле из nodejs?

808