Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Я так понимаю, что если у меня около 15 таблиц в DataSet, и я хочу иметь всего три процедуры, по одной на каждую операцию(INSERT,UPDATE,DELETE) обновления данных в базе на SQL сервере я должен буду, вопервых для того же daTest.InsertCommand описать кучу параметров, а в самой хранимой процедуре указать все эти параметры В этом может помочь мастер VS.NET - описать и сгенерировать необходимые процедуры, которые за тем можно подправить. Существуют еще различные генераторы формирования ХП, и DataAdapter. Вручную заниматься вводом параметров правильно настроенного DataAdapter тоже нет необходимости, данные должны подставляться автоматически на основе обновляемой строки. И здесь также есть различные сторонние генераторы формирующие DataAdapter на основе схемы таблицы. и перед каждым оператором INSERT делать проверку, есть такие параметры, т.е. есть ли строки на вставление или нет. Так? Считаю полезным явно определять при помощи DataSet.GetChanges , или DataTable.Select . Те изменения которые произошли в DataSet. Пример использования DataSet.GetChanges опять же можно получить при помощи мастера VS.NET, DataTable.Select используют, например при Insert когда необходимо обновить текущий DataSet получаемыми значениями Identity. Как альтернатива иметь несколько процедур для каждой операции, но тогда придется менять параметр Код: plaintext 1. 2. Обычно используется несколько "заточенных" экземпляров класса DataAdapter для каждой таблицы. Таким образом ничего менять не приходится. Либо создавать и настраивать свой DataAdapter в нужном месте, но если пойти таким путем то ИМХО вообще DataAdapter не нужен, создаем и настраиваем Command вручную, передаем параметры на основе строки и запускаем ХП на выполнение. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 07:59 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Спасибо за развернутый ответ:) А пятнадцать DataAdapter для 15 таблиц это не слишком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 12:19 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
не слишком :-) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 12:28 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Значит так, пока я сделал следующее. Есть тестовая база, две таблицы TeloTbl(Teloid(Primary key),fio,city) и CityTbl(CityId(Primary key)),связаны отношением один ко многим, т.е. CityTbl фактически справочник городов для TeloTbl. Код следующий: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. Вроде все работает, такую же схему хочу применить и к большой базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 14:18 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Вроде все работает, такую же схему хочу применить и к большой базе. Попробуйте, принципиально плохого ничего не увидел. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 14:26 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Спасибо:), единственное, что меня смущает, так это количество параметров для каждой процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 14:33 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
единственное, что меня смущает, так это количество параметров для каждой процедуры. Это разве много? :-) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 14:34 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Да нет, это то не много, но в реальном DataSet около 15 таблиц по 5 -6 столбцов примерно. Итого очень приблизительно порядка 50 параметров для каждой процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 15:02 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Да нет, это то не много, но в реальном DataSet около 15 таблиц по 5 -6 столбцов примерно. Итого очень приблизительно порядка 50 параметров для каждой процедуры. Не понял как получается порядка 50 параметров? Если в таблицах по 5-6 столбцов примерно. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 17:23 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Принципиально плохо (ИМХО) - dbo.spDeleteTelo, dbo.spInsertTelo - а флаг в процедуре завести слабо - типа 1 - удаление, 2, добавление и т.п. Таблица одна. Более того, количество параметров тогда одинаково в процедуре и задаётся в отдельной функции для всех команд абсолютно одинаково. Разница только в значениях параметров. Кода таким образом становится меньше. 2 sa Считаю полезным явно определять при помощи DataSet.GetChanges, или DataTable.Select. Те изменения которые произошли в DataSet Полезно, но не всегда необходимо. Зачастую не использую совсем. Идентити новой записи получаю через выходной параметр ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:24 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Пока для UPDATE получается такая процедура, 60 параметров:( Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 18:21 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Пока для UPDATE получается такая процедура, 60 параметров:( Вообще то такую штуку я и не предполагал :-) Почему не хотите сделать отдельные процедуры для каждой таблицы|DataAdapter'а? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 21:49 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Т.е. для каждой таблицы будет три процедуры UPDATE,DELETE и INSERT, и соответственно свой DataAdapter, к которым всеравно придется описывать все эти же параметры, помоему получится даже более громоздко, или нет? Или можно описать все параметры, а потом перед обновлением изменять параметр CommandText, т.е. что нибудь типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 23:19 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Т.е. для каждой таблицы будет три процедуры UPDATE,DELETE и INSERT, и соответственно свой DataAdapter, к которым всеравно придется описывать все эти же параметры, помоему получится даже более громоздко, или нет? Думаю это правильно с логической и функциональной точки зрения. Хотя трудно что то советовать не зная предметную область и постановку задачи. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 23:49 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
После продолжительного обсуждения, у меня сложилось собственное мнение, но вопросов не поубавилось. Отдельное спасибо Hummer за идею создавать параметры в отдельной процедуре, и Sa за развернутые ответы:) Итак, что имеем. Тестовая база состаящая из двух таблиц,TeloTbl(Teloid(Primary key),fio,city) и CityTbl(CityId(Primary key)),связаны отношением один ко многим, т.е. CityTbl фактически справочник городов для TeloTbl и следующий работающий код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 1. При использовании варианта, который сделан в тестовой базе, придется сделать три хранимых процедуры с одинаковым числом параметров, коих около 80.На чем это может отражаться кроме гомоздкости кода хранимых процедур? 2.Вариант второй. На каждую таблицу по три "своих" ХП.Тогда придется описывать теже 80 параметров плюс переодически менять параметр CommandText для Command. 3.Вариант третий. Использовать для каждой таблицы сврй DataAdapter, тоже помоему слишком громоздко. Следует учесть, что в реальной базе все эти обновления должны происходить вместе, т.е. пользователь открыл данные по определенной фирме, далее он чтото меняет в них, затем нажимает кнопку ОК и происходит запись _всех_ внесенных изменений в базу. Может быть кто-то сталкивался с проектами в которых нужно было одномоментно вносить изменения в большое количество таблиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 15:49 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Одномоментно в 15 таблиц вносить изменения - что имеем: либо неправильная структура БД, либо слишком перегруженная информацией карточка на изменение БД - т.е. прям представил форму, на которой инфа из 15 таблиц и вся меняется:) Можно дальше пойти, всю БД на такую форму запихнуть. Модифицируйте вариант 2 - на каждую табличку 1 процедура с флагом, по которому в процедуре определям, удалять, изменять или добавлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 16:42 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Итак продолжим :), по совету уважаемого Hummer, модифицировал вариант два из своего предыдущего поста. Плюсы в данном варианте вижу следующие: 1. Объект Command один на каждую хранимую процедуру(таблицу). 2. Соответственно параметры создаются только один раз для данной команды. Минусы: 1. Помоему слишком громоздко выглядит кусок кода отвечающий непосредственно за отправку обновлений на SQL Server. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Скорее всего карточка и правда перегружена, но сильно не бейте , ибо это мой первый проект :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2004, 13:38 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
Более модифицированнный вариант. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2004, 15:15 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
dencatА на форме инфа действительно из 15 таблиц, а то что меняется все сразу естественно предельный вариант, на самом деле меняться будет одна - три таблицы за раз. Скорее всего карточка и правда перегружена, но сильно не бейте , ибо это мой первый проект :) Всё равно не пойму. Неужели нельзя сгруппировать информацию в таблицах по какому-либо признаку и разделить эту дикую форму на несколько, открывающихся друг из друга, например, по кнопке ? Можно на одной форме наложить несколько вкладок и раскидать инфу по ним. Опять же, ведь таблицы имеют между собой какие-то отношения ? Почему, например в ХП не сделать join между соотносящимися таблицами и менять/добавлять/удалять связанные данные на основании данных какой-либо одной ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2004, 16:53 |
|
||
|
Вопрос по внесению изменений в базу SQL Server.
|
|||
|---|---|---|---|
|
#18+
не по теме - зато про войну... вместо этого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. можно просто: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2004, 17:59 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=32689752&tid=1438358]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 377ms |

| 0 / 0 |
