
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.03.2005, 19:50
|
|||
|---|---|---|---|
Несколько вопросов по ADO.NET |
|||
|
#18+
Привет. До этого я программировал клиентов на Delphi, а сейчас приходиться разбираться с ADO.NET, в частности с датасетом и датаадаптером, и мне многие его концепции непонятны: 1) Не могу найти аналога дельфийскому DataSet.Refresh (и RefreshSQL соттветственно). Т.е. мне надо перечитать одну конкретную запись из таблицы в объект DataTable. Как мне это сделать? 2) Как осуществляется вставка записей мне непонятно. Например у меня есть таблица с миллионом записей. Я один раз заполнил DataSet и вставил на клиенте 5 записей в эту таблицу. В это же время ещё несколько граждан вставили тоже по несколько записей и теперь мы свои изменения пытаемся влить в базу. Мне не понятно как адо разруливает создание уникальных ключей. Если АДО генерирует их сам, то как он обеспечивает уиникальность ключей у меня и у соседей. Если же ключи создаються на сервере, то как мне после вставки изменений узнать значения вставленных ключей ? 3) Возможно ли чтобы DataSet заполнялся по мере необходимости? В дельфи считывалось столько записей, сколько нужно для отображения в связанных с датасетом контролах. Если контролос нет, то при вызове DataSet.Open из базы считывается только одна запись. Таким образом если у меня есть таблица с 100 миллионами записей и она отображается в DBGrid, то по умолчанию на клиента будут грузиться не все 100 миллионов, а столько, сколько требует грид. Как это работает в адо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2005, 20:08
|
|||
|---|---|---|---|
|
|||
Несколько вопросов по ADO.NET |
|||
|
#18+
авторне могу найти аналога ... 1. не ищи аналогов там, где их нет :) 2. полностью забудь опыт программирования с обычным ADO вообще и в Delphi в частности. для начала посмотри: ADO.NET for the ADO Programmer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.03.2005, 13:24
|
|||
|---|---|---|---|
Несколько вопросов по ADO.NET |
|||
|
#18+
Gold посмотри форум по 3 вопросу описывались по "листные запросы" - типа того не помню. и что тебе сдесь помешало считывать нужную информацию в DataSet? это дело простых запросов(для начала) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.03.2005, 13:41
|
|||
|---|---|---|---|
Несколько вопросов по ADO.NET |
|||
|
#18+
Стр...2. полностью забудь опыт программирования с обычным ADO вообще и в Delphi в частности... Ну не полностью, но в целом поддерживаю. Касательно первого вопроса. Можно считать одну строку в отдельный датасет и затем сделать им Merge. Это будет похоже на Resync по эффекту :). Касательно второго вопроса - мне понравился один прикольный способ для master-detail датасетов, но и для однотабличных сойдет. В ключевой колонке назначается автоинкремент 0 и идет в минус. А при сохранении у адаптера вызывается команда на сохранение, которая может сделать селект сохраняемой строки после ее обновления (или вставки) уже со всеми ключами и т.п. Эта команда настраивается тобой-же, т.е. можно и хп замутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.03.2005, 14:29
|
|||
|---|---|---|---|
Несколько вопросов по ADO.NET |
|||
|
#18+
Gold сейчас приходиться разбираться с ADO.NET, в частности с датасетом и датаадаптером, и мне многие его концепции непонятны читайте литературу, постепенно сориентируетесь. Gold 1) Не могу найти аналога дельфийскому DataSet.Refresh (и RefreshSQL соттветственно). Т.е. мне надо перечитать одну конкретную запись из таблицы в объект DataTable. Как мне это сделать? Одно из главных преимуществ DataSet состоит в том, что он не зависит от источника данных. Т.е. нет обратной связи DataSet <-> Database , и нигде в DataSet вы не найдете сведений откуда были получены данные, либо из БД, либо из XML, либо сгенерированы вручную, таким образом не может быть и речи о существовании метода Refresh в классе DataSet . Функциональность по обновлению данных реализуется разными способами вручную, варианты реализации можно посмотреть здесь на форуме и на форуме C#. Gold 2) Как осуществляется вставка записей мне непонятно. Например у меня есть таблица с миллионом записей. Я один раз заполнил DataSet и вставил на клиенте 5 записей в эту таблицу. В это же время ещё несколько граждан вставили тоже по несколько записей и теперь мы свои изменения пытаемся влить в базу. Мне не понятно как адо разруливает создание уникальных ключей. Если АДО генерирует их сам, то как он обеспечивает уиникальность ключей у меня и у соседей. Если же ключи создаються на сервере, то как мне после вставки изменений узнать значения вставленных ключей ? Как вы запрограммируете так и будет эта ситуация разруливаться :-) ADO.NET здесь не принимает решений, в случае чего просто поймаете исключение. Артем1 мне понравился один прикольный способ для master-detail датасетов, но и для однотабличных сойдет. В ключевой колонке назначается автоинкремент 0 и идет в минус. Это рекомендуемая практика, когда, отсоединено от источника данных, идет генерация псевдоключей, а при вставке данных значения псевдоключей подменяются реальными данными, (автоинкремент может быть любым, в минус - обеспечивается "согласованность" с уже имеющимися ID) Gold 3) Возможно ли чтобы DataSet заполнялся по мере необходимости? В дельфи считывалось столько записей, сколько нужно для отображения в связанных с датасетом контролах. Если контролос нет, то при вызове DataSet.Open из базы считывается только одна запись. Таким образом если у меня есть таблица с 100 миллионами записей и она отображается в DBGrid, то по умолчанию на клиента будут грузиться не все 100 миллионов, а столько, сколько требует грид. Как это работает в адо? Мое ИМХО, если 100 млн. записей в гриде - это ошибка проектирования, рядовой пользователь не сможет переварить столько. Если же и вызовется "доброволец", то реализуйте ему порционную загрузку данных. P.S. у вас везде слово ADO , а я говорю про ADO.NET , так как форум у нас так называется ADO.NET :-) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.03.2005, 16:42
|
|||
|---|---|---|---|
Несколько вопросов по ADO.NET |
|||
|
#18+
Спасибо всем за ответы. По ходу дела оказалось что у нас люди DataSet вобще не используют. Считывают данные датаридером в свои классы и работают со своими классами. Тоже интересный способ, только вот привязку этик классов к контролам делать дольше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=17&mobile=1&tid=1353803]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 384ms |

| 0 / 0 |
