|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
Добрый день. Использую БД Oracle с триггером в столбце ID Таблица: ID - number NAME - varchar Далее есть форма с DataGridView и стандартной связкой через OracleDataAdapter: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Далее добавляю новые строки в DataGridView и передаю обновление в БД Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
И вопрос: Как мне теперь обновить данные в DataSet, чтобы появилось значение в поле ID ? Как это сделать правильно? Может чего-то не дописал ври инициализации DataSet ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 10:21 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
Syrex, Дэвид Сеппа, "Программирование на ADO.NET 2.0", глава 11 "Сложные случаи обновления данных". Вкратце, после вставки данных нужно сделать select нового id. Вот только непонятно: id должен автогенерироваться при вставке (insert), а не при обновлении (update). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 10:36 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
У меня пока что есть только одно решение, но как-то это неправильно сделать Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 10:45 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
В MSSQL если делаешь типизированный DataSet в дизайнере, то студия сама в InsertCommand, после INSERT... вставляет SELECT ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 11:00 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
А зачем ты делаешь .AcceptChanges после Update. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 11:02 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
fortibransaВ MSSQL если делаешь типизированный DataSet в дизайнере, то студия сама в InsertCommand, после INSERT... вставляет SELECT - В том-то и проблема - у меня Oracle Если правильно помню, da.Update - это передача в БД а ds.AcceptChanges - фиксация изменений в DataSet Вроде все правильно, если нет - прошу направить кодом или линком ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 11:23 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
SyrexfortibransaВ MSSQL если делаешь типизированный DataSet в дизайнере, то студия сама в InsertCommand, после INSERT... вставляет SELECT - В том-то и проблема - у меня Oracle Если правильно помню, da.Update - это передача в БД а ds.AcceptChanges - фиксация изменений в DataSet Вроде все правильно, если нет - прошу направить кодом или линкомНе правильно понял. Update выполняет что надо в зависимости от State записи, Delete? Insert Update и далее выполняется AcceptChanges. Ты попробуй создать типизированный DataSet если у тебя есть в студии соответствующие типы для Oracle, они вообще-то должны быть. А так, тебе тогда надо как-то идентифицировать запись, (еще один ключь), ну и select ее. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 11:30 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
Вот например, студия нагенерила. Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 11:38 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
Спасибо. Интересный запрос получился ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 11:48 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
fortibransaВот например, студия нагенерила. Код: c# 1.
Стремно это для многопользовательского режима... И весьма странно, что такое "студия нагенерила", ведь в t-sql есть output starting with 2008, а для более ранних версий можно сделать триггер "after insert" с "select * from inserted". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 12:30 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
LRfortibransaВот например, студия нагенерила. Код: c# 1.
Стремно это для многопользовательского режима... А, виноват, не прав. Вовсе не стремно))) "Returns the last identity value inserted into an identity column in the same scope. A scope is a module: a stored procedure, trigger, function, or batch." ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 12:32 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
Причем SELECT после INSERT по всем полям, по видимому, мало-ли что у Вас там в триггерах и пр. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 12:35 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
Там банальный триггер на вызов сиквенса ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 12:36 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
fortibransaВот например, студия нагенерила. Код: c# 1. 2. 3.
в ДатаАдаптере ещё свойство включить надо: Свойство DataAdapter.AcceptChangesDuringUpdate и в селекте только одно поле ИД оставить... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 22:30 |
|
DataAdapter перезагрузка DataSet после AccepChanges
|
|||
---|---|---|---|
#18+
WitCfortibransaВот например, студия нагенерила. Код: c# 1. 2. 3.
в ДатаАдаптере ещё свойство включить надо: Свойство DataAdapter.AcceptChangesDuringUpdate и в селекте только одно поле ИД оставить...Эта хрень вообще-то включена по умолчанию и там нихрена не редактируется, студия все вернет так как она считает нужным. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2017, 07:02 |
|
|
start [/forum/topic.php?fid=20&fpage=41&tid=1399799]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 450ms |
0 / 0 |