|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Подскажите, как получить значение SCOPE_IDENTITY() после того, как пользователь вставил строки в DataTable ? т.е. есть DataTable, который был заполнен из MS SQL через SqlDataAdapter.Fill . После этого, пользователь добавляет строки в этот DataTable Те строки, которые он добавил, я запоминаю в специальный List<DataRow> InsertedRows Код: c# 1. 2. 3. 4.
И записываю в БД так: Код: c# 1. 2. 3. 4. 5.
Всё работает, но после вставки ИД вставленных строк меняется. Я не могу понять, какие ИД получили вставленные строки. Как это правильно сделать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2019, 17:42 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Точнее, Всё работает, но после вставки ИД вставленных строк в DataTable НЕ меняется. Таблица такая, я хочу получить TmpID после вставки. Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2019, 17:50 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_BНЕ меняется.а должны? Вы бы ссылку дали из хелпа адаптера что он должен это делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 07:21 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Petro123, Вопрос не том должен ли он меняться или нет. Вопрос как получить SCOPE_IDENTITY этих значений ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 09:15 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_B, Перечитать, fill ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 09:44 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Petro123, Если я перечитаю, то будет не понятно, какие именно строки были вставлены. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 10:06 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_BPetro123, Если я перечитаю, то будет не понятно, какие именно строки были вставлены.те которые ты вставлял. Короткая память что ли?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 10:24 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_B, 4.2. Getting an Identity Column Value from SQL Server в MSDN это тоже есть, первое что нагуглилось ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 19:40 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
buser, Спасибо за ответ, но это не подходит... т.к. там предлагается писать сторед процедуру. А таблиц много. Получается, что по ХП на каждую таблицу, только для того, что бы выяснить SCOPE_IDENTITY() В ADODB (или OLEDB, которая встроена в Windows) вообще не возникает такого вопроса. После вставки строки в таблицу, он сам делает запрос SELECT SCOPE_IDENTITY() и проставляет в соответствующее поле в ADODB RecordSet. Не ужели в ADO NET так нельзя ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 11:19 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_BНе ужели в ADO NET так нельзя ?не имеет смысла, так как рядом тоже вставляют, меняют, удаляют. Поэтому нужны изменения не только ваши, но и чужие. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 12:22 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_Bbuser, Спасибо за ответ, но это не подходит... т.к. там предлагается писать сторед процедуру. А таблиц много. Получается, что по ХП на каждую таблицу, только для того, что бы выяснить SCOPE_IDENTITY() В ADODB (или OLEDB, которая встроена в Windows) вообще не возникает такого вопроса. После вставки строки в таблицу, он сам делает запрос SELECT SCOPE_IDENTITY() и проставляет в соответствующее поле в ADODB RecordSet. Не ужели в ADO NET так нельзя ? Не вижу проблемы... ну не пишите процедуру если не хотите... пешите все в тексте UpdateCommand... мс. MSDN ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 13:22 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_B, и да пИшите... и да - InsertCommand ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 13:24 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_B, Не ужели в ADO NET так нельзя ? ----- А причем тут АДО? У тебя есть ДВЕ отдельные операции: - запись в базы - получение идентити из базы Операции - записать и вернуть - нету. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 19:33 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Petro123, не имеет смысла ----- Смысл - есть. Держишь в памяти достаточно большую таблицу - надо добавить 2-3 строки и засинхронизировать ИДсы. Мне, например, нужно достаточно регулярно. А вот приличных реализаций пока не видел. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 19:36 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_B, А таблиц много. ----- Наследование и строгую типизацию таблиц еще никто не отменял. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 19:38 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
PinkCatДержишь в памяти достаточно большую таблицу - надо добавить 2-3 строки и засинхронизировать ИДсы.вопрос был - зачем? Ну не модно счас держать в памяти большую таблицу). PinkCatА вот приличных реализаций пока не видел.дак это звоночек к тому что вдруг постановка не верна? Или к примеру, все пошли другим путем. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 21:09 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Petro123, Ну не модно ----- Много чего сейчас не модно. Вот как не могут сделать нормально-удобное - так и не модно... Это не значит что оно не правильно. Переделывал как-то процедурку аллокации элементов на форме. Да-да, есть и такие автоматы... Работала - медленно. Пока не написал индекс. Ну и зачем мне это было писать, если сделав изначально нормальный типизированный датасет с таблицами все получил бы автоматом? И в базу мне его сбрасывать совершенно не надо - только перестановка цифирек по месту. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 11:41 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
PinkCatЭто не значит что оно не правильно.чисто бизнес. Подавление большой корпорацией множества мелких кустарных решений "для клиента". Чисто бизнес. Десктоп ушел в веб, таблицы в списки, датаСет в ОРМ. Обновление строки в таблице ушло в библиотечный компонент Таблица со всеми мыслимыми хотелками. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 12:59 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Petro123, Подавление большой корпорацией множества мелких кустарных решений ----- В параллельной ветке поковыряли решение большой корпорации - неэффективность - жуткая... ушло в библиотечный компонент Таблица ----- А перегрузить ее не пробовал? Там получается красиво и не медленно. Я вот себя матом крою - не стал перегружать, а стал агрегировать... Нее - нужное - работает, а вот прибамбасы - обрезаны... По ходу - надо было писать свою имплементацию IDb*... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 15:09 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
PinkCatА перегрузить ее не пробовал?нормально. Они либо виртуальные с бесконечным скроллом. Либо пагинация. Но ведь платные же все)). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 16:31 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Что то я вообще не понимая о чём идёт речь в последних 10 сообщениях. Так есть способ узнать Identity без своего велосипеда ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 18:23 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_B, Так есть способ узнать Identity без своего велосипеда ? ----- Ну тебе же написали - вставляешь строку и запрашиваешь Идентити по последней вставке. Две отдельные операции. А чтобы не копировать велосипед в количестве 100500 раз - наследуешься от DataTable. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 18:40 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_BЧто то я вообще не понимая о чём идёт речь в последних 10 сообщениях.спасибо что рассказал. Valery_BТак есть способ узнать Identity без своего велосипеда ? Я вроде не ошибался выше когда говорил перечитать. Ты пробовал с тех пор? Вот еще более разжевано: авторМетод Update позволяет решить задачу по передаче внесенных изменений обратно в источник данных; но может оказаться так, что другие клиенты уже внесли изменения в данные источника данных с того момента, как последний раз было осуществлено заполнение DataSet. Чтобы обновить применяемый объект DataSet с использованием текущих данных, воспользуйтесь DataAdapter и методом Fill. Произойдет добавление новых строк к таблице, а обновленная информация будет включена в существующие строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 19:47 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Valery_BЧто то я вообще не понимая о чём идёт речь в последних 10 сообщениях. Так есть способ узнать Identity без своего велосипеда ? + к описанному выше: в запросе можно использовать output https://stackoverflow.com/questions/10999396/how-do-i-use-an-insert-statements-output-clause-to-get-the-identity-value ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 11:24 |
|
Получение значение Identity после вставки в DataTable
|
|||
---|---|---|---|
#18+
Ролг Хупин, В результате я сделал так: Код: c# 1. 2. 3. 4. 5.
При этом, если написать Код: c# 1. 2.
т.е. если поставить заведомо неправильную SQL команда на вставку, то ничего не ломается , а запись вставляется в табилцу. Он не обрабатывает CommandText, и выполняет только то, что CommandBuilder создал вначале. Эту глюко-фичу я вообще не могу объяснить. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 10:12 |
|
|
start [/forum/topic.php?fid=17&fpage=3&tid=1349120]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 233ms |
total: | 377ms |
0 / 0 |