Login
.Net - вправьте, плс, мне мозги...
10.03.08 21:10
Вообщем отдохнул Я... весьма неплохо... теперь пора возвращаться к работе...
И так имеем:
Среда - Studio 2005 (FW 2.0) + MS SQL 2005
Требуется элементарное - сформировать запись и воткнуть ее в базу.
Читаем доку - для операций с данными рекомендуется нечто под названием DataSet.
Ну раз рекомендуется - пользуем. Берем дизайнер, строим простейший однотабличный
типизированный DataSet. Дизайнер попутно создает еще несколько файликов/класов
(мне они, в принципе, не интересны по причине их автогенерации, но будем помнить
что они есть).
Читаем доку дальше.
Поскольку табличка в DataSet'е есть, построим для нее адаптер с командами для Select,
Insert, Update и Delete. Опять никаких проблем все построено, класс сгенерен.
Читаем доку дальше.
Каждый DataSet имеет метод AcceptChanges(). Метод предназначен для фиксации изменений
в DataSet'е. Вроде все сделано и понятно...
Теперь пишем элементарный код - объект, создает DataSet, манипулирует имеющейся в
нем табличкой и добавляет (как это делается описывать не буду - на такие мелочи как
сначала получить запись из таблицы, потом ее же обратно добавить - вы и сами знаете)
туда запись. Потом вызывается AcceptChanges() и... как вы догадываетесь изменения не
сохраняются в базе...
Ладушки, роем доку дальше... Оказывается, что для сейвинга требуется SqlDataAdapter с командами.
Но, блин, Я же их задал создав *DataSetTableAdapters!!! Приходится лезть в сгенерированные
файлики и смотреть что же там есть... Как ни странно - там есть все что надо... С одним НО -
все что надо находится в одельном классе, который еще обернут отдельным Namespace'ом и
который, естественно, надо создавать и использовать...
Загрузка - аналогично, созданием инстансов двух различных классов.
Еще раз обращаю внимание - создавался типизированный DataSet... В соотвествии с моими
представлениями об типизации и ООП - должен был уметь save/load куда указано, в частности на
MS SQL... Изменений, чтобы это именно так и работало - 3-5 строк...
Вообщем - прочистите мне мозги - что-то Я совсем запарился с биллиными поделками... :(
И так имеем:
Среда - Studio 2005 (FW 2.0) + MS SQL 2005
Требуется элементарное - сформировать запись и воткнуть ее в базу.
Читаем доку - для операций с данными рекомендуется нечто под названием DataSet.
Ну раз рекомендуется - пользуем. Берем дизайнер, строим простейший однотабличный
типизированный DataSet. Дизайнер попутно создает еще несколько файликов/класов
(мне они, в принципе, не интересны по причине их автогенерации, но будем помнить
что они есть).
Читаем доку дальше.
Поскольку табличка в DataSet'е есть, построим для нее адаптер с командами для Select,
Insert, Update и Delete. Опять никаких проблем все построено, класс сгенерен.
Читаем доку дальше.
Каждый DataSet имеет метод AcceptChanges(). Метод предназначен для фиксации изменений
в DataSet'е. Вроде все сделано и понятно...
Теперь пишем элементарный код - объект, создает DataSet, манипулирует имеющейся в
нем табличкой и добавляет (как это делается описывать не буду - на такие мелочи как
сначала получить запись из таблицы, потом ее же обратно добавить - вы и сами знаете)
туда запись. Потом вызывается AcceptChanges() и... как вы догадываетесь изменения не
сохраняются в базе...
Ладушки, роем доку дальше... Оказывается, что для сейвинга требуется SqlDataAdapter с командами.
Но, блин, Я же их задал создав *DataSetTableAdapters!!! Приходится лезть в сгенерированные
файлики и смотреть что же там есть... Как ни странно - там есть все что надо... С одним НО -
все что надо находится в одельном классе, который еще обернут отдельным Namespace'ом и
который, естественно, надо создавать и использовать...
Загрузка - аналогично, созданием инстансов двух различных классов.
Еще раз обращаю внимание - создавался типизированный DataSet... В соотвествии с моими
представлениями об типизации и ООП - должен был уметь save/load куда указано, в частности на
MS SQL... Изменений, чтобы это именно так и работало - 3-5 строк...
Вообщем - прочистите мне мозги - что-то Я совсем запарился с биллиными поделками... :(
NEW 10.03.08 22:40
in Antwort Murr 10.03.08 21:10
А я только думал написать. Сейчас прийдет Мурр и тебе все вправит 
Ну захотел человек больше слоев, что бы универсальней было. Но что-то я проблем не припомню. Кстати, сгенирированные классы таблиц довольно удобны и там много разной нужной фигни есть.

Ну захотел человек больше слоев, что бы универсальней было. Но что-то я проблем не припомню. Кстати, сгенирированные классы таблиц довольно удобны и там много разной нужной фигни есть.
NEW 10.03.08 22:56
in Antwort AlexNek 10.03.08 22:40
Кстати, сгенирированные классы таблиц довольно удобны и там много разной нужной фигни есть.
------
Угу... правда _элементарного_ - нету... Ну что стоило слепить DataAdapter, подпихнуть
его в DataSet как IO-процессор по умолчанию и дать возможность его поменять? На элементарном
уровне - интерфейсик унаследовали, имплементировали и присвоили... и все идет куда задано...
Так нет, блин, надо наплодить кучу классов, в которых надо разбираться и помнить где, когда и
какой пользовать... Ггггррррр....
Ну и новая прибабаха - берем тот же DataSet, добавляем одну запись, сохраняем... ура, имеем
единичку в качестве ключика!!! Удаляем запись из таблицы, повторяем процесс... Последовательность
в базе как и положено идет в перед и дает - 2, а DataSet бодро рапортует - 1... При этом код,
в сгенерированном SQL и классе вполне приличный - должен возвращать 2... только он не
вызывается - вызывается какой-то базовый метод... Ггггррррр....
Блин, как Я давно не возился с поделками билли... Вот в Борланде почти всегда было совпадение
ожидаемого с фактическим... даже в доки можно было не лазить...
------
Угу... правда _элементарного_ - нету... Ну что стоило слепить DataAdapter, подпихнуть
его в DataSet как IO-процессор по умолчанию и дать возможность его поменять? На элементарном
уровне - интерфейсик унаследовали, имплементировали и присвоили... и все идет куда задано...
Так нет, блин, надо наплодить кучу классов, в которых надо разбираться и помнить где, когда и
какой пользовать... Ггггррррр....
Ну и новая прибабаха - берем тот же DataSet, добавляем одну запись, сохраняем... ура, имеем
единичку в качестве ключика!!! Удаляем запись из таблицы, повторяем процесс... Последовательность
в базе как и положено идет в перед и дает - 2, а DataSet бодро рапортует - 1... При этом код,
в сгенерированном SQL и классе вполне приличный - должен возвращать 2... только он не
вызывается - вызывается какой-то базовый метод... Ггггррррр....
Блин, как Я давно не возился с поделками билли... Вот в Борланде почти всегда было совпадение
ожидаемого с фактическим... даже в доки можно было не лазить...
NEW 11.03.08 12:20
in Antwort Murr 10.03.08 23:30, Zuletzt geändert 11.03.08 15:20 (scorpi_)
Если не прочистит, то остаётся только сеппуку.
NEW 11.03.08 18:16
Много чего нету что хочется, на то он и дядя Билли. Они делают как ИМ нужно и удобно. В отличии от Борланда, который на мой взляд делает больше для пользователй.
Да та же концепция "визуальной" разработки программ была раньше Борландом сделана, неизвесто где еще был бы НЕТ если бы они не сманили главного архитектора из борланда.
С дргой стороны на Билла русгаешся до тех пор пока что-то совсем другое не попробуешь.
in Antwort Murr 10.03.08 22:56
В ответ на:
Угу... правда _элементарного_ - нету
Угу... правда _элементарного_ - нету
Много чего нету что хочется, на то он и дядя Билли. Они делают как ИМ нужно и удобно. В отличии от Борланда, который на мой взляд делает больше для пользователй.
Да та же концепция "визуальной" разработки программ была раньше Борландом сделана, неизвесто где еще был бы НЕТ если бы они не сманили главного архитектора из борланда.
С дргой стороны на Билла русгаешся до тех пор пока что-то совсем другое не попробуешь.
NEW 11.03.08 19:15
in Antwort AlexNek 11.03.08 18:16
Одна из самых (на мой взгляд) удобных концепций визуальной разработки была сделана в Sybase Power++, который они правда забросили после версии 2.5. В россии эта среда была малоизвестна, хотя в свое время они еще производили и Sybase PowerJ, примерно с теми же возможностями. Ну и конечно потом, большая часть наработок ушла в PowerBuilder
11.03.08 19:34
Долго смеялся. Борланд делает для чайников. Dixi.
in Antwort AlexNek 11.03.08 18:16
В ответ на:
Они делают как ИМ нужно и удобно. В отличии от Борланда, который на мой взляд делает больше для пользователй.
Они делают как ИМ нужно и удобно. В отличии от Борланда, который на мой взляд делает больше для пользователй.
Долго смеялся. Борланд делает для чайников. Dixi.
NEW 11.03.08 20:41
in Antwort AlexOtt 11.03.08 19:15
Никогда не видел. А можно немного подробней рассказать если не ломит.
NEW 11.03.08 21:03
in Antwort scorpi_ 11.03.08 19:34
Ну да, нахрен профи с пропертями возится когда можно код написать.
Давай возьмем студию от мелкофта - не "НЕТ". Скажи-ка сколько потребуется времени для написания простого диалога, скажем с вводом текста, вводом даты из календаря или вручную и парой радиобатонов. Да, еще хочу, чтобы при изменении размера диалога мои элементы также изменяли размер. Еще мог бы захотеть что-бы все мои остальные диалоги были зависимы от базового - визуально, то есть при изменении расположения кнопочек в базовом, во всех остальных все изменилось автоматом. Но хрен с ним, о наследовании ресурсов я еще не слыхал.
Давай возьмем студию от мелкофта - не "НЕТ". Скажи-ка сколько потребуется времени для написания простого диалога, скажем с вводом текста, вводом даты из календаря или вручную и парой радиобатонов. Да, еще хочу, чтобы при изменении размера диалога мои элементы также изменяли размер. Еще мог бы захотеть что-бы все мои остальные диалоги были зависимы от базового - визуально, то есть при изменении расположения кнопочек в базовом, во всех остальных все изменилось автоматом. Но хрен с ним, о наследовании ресурсов я еще не слыхал.
NEW 11.03.08 21:06
in Antwort AlexNek 11.03.08 20:41
в поставке был достаточно богатый набор готовых контролов, включая контролы для работы с БД, удобная интеграция с ActiveX и т.п.
был еще совершенно безумный контрол для отчетов, графиков и т.п. на основе данных из БД (он был заимствован из PowerBuilder)
P.S. многие продукты Sybase почему-то незаслуженно замалчиваются - например, PowerDesigner - замечательное средство для моделирования баз данных (логическое и физическое моделирование, поддержка кучи БД, включая open source, реверс-инженеринг, прямая работа с БД и т.п.), а также для UML-моделирования, включая генерацию кода на С++
был еще совершенно безумный контрол для отчетов, графиков и т.п. на основе данных из БД (он был заимствован из PowerBuilder)
P.S. многие продукты Sybase почему-то незаслуженно замалчиваются - например, PowerDesigner - замечательное средство для моделирования баз данных (логическое и физическое моделирование, поддержка кучи БД, включая open source, реверс-инженеринг, прямая работа с БД и т.п.), а также для UML-моделирования, включая генерацию кода на С++
NEW 11.03.08 21:07
in Antwort AlexNek 11.03.08 20:41
да, забыл упомянуть, что Power++ в девичестве называлась Watcom Optima C++
NEW 11.03.08 21:22
in Antwort AlexOtt 11.03.08 21:06
Так ты про концепт говорил, а в итоге тебе просто библиотека и контролы понравились.
А для разработки баз мне до сих пор Erwin нравится, был нескзанно удивлен, когда на каждом углу стали появлятся плакаты с этим названием. Оказалось у будушего мэра была такая же фамилия.
А для разработки баз мне до сих пор Erwin нравится, был нескзанно удивлен, когда на каждом углу стали появлятся плакаты с этим названием. Оказалось у будушего мэра была такая же фамилия.
NEW 11.03.08 21:35
in Antwort AlexNek 11.03.08 21:22
да, про концепт я-то и не написал :-)
основное преимущество для быстрой разработки заключалось в том, что он, в отличии от делфи, не пихал в пользовательский код автосгенеренные вещи - объявления контролов, диспатчинг функций и т.п. Пользователю для реализации оставалось опредеелние хэндлеров для тех или иных событий. Насколько я помню, у них сразу не было проблем с масштабированием окон и т.п. вещей. Несмотря на то, что оно на первый взгляд казалось пригодным только к типовым интерфейсам, можно было легко разработать свои контролы, сделать готовые библиотеки диалогов и т.п. вещей, и все это выносилось на панели инструментов...
P.S. правда в следующем году уже можно будет отмечать 10-ю годовщину прекращения проекта :-(
основное преимущество для быстрой разработки заключалось в том, что он, в отличии от делфи, не пихал в пользовательский код автосгенеренные вещи - объявления контролов, диспатчинг функций и т.п. Пользователю для реализации оставалось опредеелние хэндлеров для тех или иных событий. Насколько я помню, у них сразу не было проблем с масштабированием окон и т.п. вещей. Несмотря на то, что оно на первый взгляд казалось пригодным только к типовым интерфейсам, можно было легко разработать свои контролы, сделать готовые библиотеки диалогов и т.п. вещей, и все это выносилось на панели инструментов...
P.S. правда в следующем году уже можно будет отмечать 10-ю годовщину прекращения проекта :-(
NEW 11.03.08 21:58
in Antwort AlexOtt 11.03.08 21:35, Zuletzt geändert 11.03.08 21:59 (AlexNek)
Концепт правда не совсем понял, но видимо те же свойства объектов.
Осталось только понять почему тогда такой проект умер.
Тот же Кларион вроде еще жив.
Осталось только понять почему тогда такой проект умер.
Тот же Кларион вроде еще жив.
NEW 12.03.08 02:58
in Antwort scorpi_ 11.03.08 19:34
Долго смеялся. Борланд делает для чайников. Dixi.
------
Ты сможешь объяснить чайнику как сделать заданную форму в другой среде?
Только так, чтобы он действительно понял с первого раза и мог сделать...
Об Борланде Я знаю, что смогу... И даже знаю сколько времени займет "научить"
расставлять контролы по форме... об бизнес-логике, базах и сложных рассчетах
не говорим - там не всегда и профи тянут...
Я вот до сих пор не разобрался, почему следующий код
INSERT INTO [dbo].[Tree] ([Parent]) VALUES (3);
SELECT SCOPE_IDENTITY() as IDs
дает правильный результат в SQL Studio, дает правильный результат в эксплорере
Studio'05 и выдает бред при выполнении через ADO... Точнее - почему - знаю,
как обойти - знаю, но вот на кой оно так сделано - не знаю... А ведь именно такой
код генерится в .NET как рабочий...
------
Ты сможешь объяснить чайнику как сделать заданную форму в другой среде?
Только так, чтобы он действительно понял с первого раза и мог сделать...
Об Борланде Я знаю, что смогу... И даже знаю сколько времени займет "научить"
расставлять контролы по форме... об бизнес-логике, базах и сложных рассчетах
не говорим - там не всегда и профи тянут...
Я вот до сих пор не разобрался, почему следующий код
INSERT INTO [dbo].[Tree] ([Parent]) VALUES (3);
SELECT SCOPE_IDENTITY() as IDs
дает правильный результат в SQL Studio, дает правильный результат в эксплорере
Studio'05 и выдает бред при выполнении через ADO... Точнее - почему - знаю,
как обойти - знаю, но вот на кой оно так сделано - не знаю... А ведь именно такой
код генерится в .NET как рабочий...
NEW 12.03.08 03:04
in Antwort AlexNek 11.03.08 18:16
С дргой стороны на Билла русгаешся до тех пор пока что-то совсем другое не попробуешь.
-------
Я вроде другого пробовал достаточно и разного. Но ругаюсь - в основном на билли.
И, собственно, ругаюсь потому, что не делает "правильно" даже там, где затраты на
"сделать правильно" меньше "сделать как было"... т.е. ситуация не выправляется...
-------
Я вроде другого пробовал достаточно и разного. Но ругаюсь - в основном на билли.
И, собственно, ругаюсь потому, что не делает "правильно" даже там, где затраты на
"сделать правильно" меньше "сделать как было"... т.е. ситуация не выправляется...
NEW 12.03.08 10:40
in Antwort AlexNek 11.03.08 21:58
ну PowerBuilder у них до сих пор жив и продается.
я думаю, что проект умер по причине смерти ваткома
я думаю, что проект умер по причине смерти ваткома
NEW 13.03.08 00:26
Может ты что-то не то пробовал
У меня Hawk IDE вылетал на каждом ребилде, надо было раз 10 перезапускать пока пройдет нормально, а билла можно было ставить в ночь на ребилд и не боятся. Если он и вылетает то стабильно, по конкретной ошибке.
Ты просто вникни в его психологию. Он все делает "правильно" .... для себя.
in Antwort Murr 12.03.08 03:04
В ответ на:
Я вроде другого пробовал достаточно и разного. Но ругаюсь - в основном на билли.
Я вроде другого пробовал достаточно и разного. Но ругаюсь - в основном на билли.
Может ты что-то не то пробовал

У меня Hawk IDE вылетал на каждом ребилде, надо было раз 10 перезапускать пока пройдет нормально, а билла можно было ставить в ночь на ребилд и не боятся. Если он и вылетает то стабильно, по конкретной ошибке.
В ответ на:
И, собственно, ругаюсь потому, что не делает "правильно"
И, собственно, ругаюсь потому, что не делает "правильно"
Ты просто вникни в его психологию. Он все делает "правильно" .... для себя.