Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
Вот. Ставится задача перевода большого проекта с BDE на ADO на Delphi 5. В общих чертах все понятно, но имеется ряд вопросов. 1) TUpdateSQL - бОльшая часть логики в старой системе была замешана именно на использовании этой компоненты. Как делать сложные произвольные updat'ы для ADO запросов? 2) Соит ли рассмотреть какние-нибудь библиотеки-оболочки ADO? Т.е. на чем вообще писать-то? На стандартных компонентах Delphi или есть какя нибудь библиотечка полезная (как по примеру: для Оракла есть ODAC) вот вроде бы и все! Буду очень признателен за ответы и пожелания! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 14:40 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
1. Апдейти можно выполнять через AdoCommand 2. ДАже и не знаю... Я писал на стандартных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 14:43 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
А что в него ADO уперлись? Что за сервер БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 14:51 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
ADO c Delphi 5 не советую использовать. Дело в том до 5-ой версии Delphi ADO в нем вообще не было и поэтому там много багов. В Delphi 6 большинство из них исправлены. Про 7-ю не знаю, не использовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 15:07 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
В 7-й багов не нашел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 15:12 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
>А что в него ADO уперлись? Прошу прощения, не указал: СУБД MSSQL 2000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 15:13 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
Ну, грузим в ClientDataSet и отрабатываем события по действиям пользователя... Может, уж лучше тогда DBExpress тогда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 15:24 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
Хоть на меня тут и наезжали, но уж если переходить с BDE, то лучше юзать DBExpress + ClientDataset. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 15:38 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
2 Cauchy : ADO c Delphi 5 не советую использовать. Дело в том до 5-ой версии Delphi ADO в нем вообще не было и поэтому там много багов. В Delphi 6 большинство из них исправлены. С одной стороны, да баги лезут из каждого угла. С другой стороны - кажется большая часть из них это не баги, а... особенности самого ADO, мать его :) С другой стороны, я не пробовал D6, но на D7 у меня лезли практически теже баги :( Для D5 надо ставить Update Pack к самой Delphi и ADOUpdate. Говоря, лечут большую часть именно борландовых багов ADO. Поскольку сам поставил их раньше, чем стал использовать ADO, точно не знаю. Вместо TUpdateSQL можно применять опцию ltBatchOptimistic. В дополнении к стандартным компонентам есть TBetterADO, но я большого отличия не нашел. 2 pkarklin: А чем лучше-то? DBExpress появился с 6-й версии, кажется. И не уверен, что в нем глюков меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 18:31 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
pkarklin писал:Хоть на меня тут и наезжали, но уж если переходить с BDE, то лучше юзать DBExpress + ClientDataset. Согласный. ADO не есь гут. Старенькая вещь уже, тормозная, и если переносите большой проект, то возможно, скоро опять переносить придётся. А в DBExpress рекомендую именно DBExpress SQLConnection + стандартный ClientDataset (через DataSetProvider) а не DBExpress-овские SQLClientDataset и SQLDataset (слишком они самостоятельные и тормозят). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 20:11 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
DBExpress Borland официально уже похоронил. так что ADO и тoлько ADO а кривой он только в кривых руках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 00:55 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
2 aag А чем лучше-то? DBExpress появился с 6-й версии, кажется. И не уверен, что в нем глюков меньше. Меня как раз не устроила реализация кэшированных изменений в ADO, то самое ltBatchOptimistic. Кроме того, в TClientDataSet есть много всяких вкусностей. :-) Естественно, чтоб не писать каждый раз обработчики для сохранения кэшированных изменений, пришлось наваять свой компонентик аля TUpdateSQL, но для TClientDataSet. 2 Lepsik DBExpress Borland официально уже похоронил. Ну счас. Вы с BDE путаете. Не мешало бы хоть раздел What's New проглядывать в хелпе.: Database technology changes (Professional and Enterprise editions) Borland has deprecated SQL Links; no further enhancements will be made to SQL Links and it will not be included with Delphi after 2002. Borland recommends using dbExpress for SQL server database access in Delphi . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 08:10 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
Навскидку, засады, которые поджидают при переходе с BDE на ADO: 1) ADO сильно чувствительно к типу полей. Если для BDE - int, smallint, tinyint - можно все делать как TIntegerField, без разницы, лишь бы число влезло, то ADO запросто при этом может "1" в smallint перекорежить в 32767 2) все запросы ADO оформляет как sp_executesql (или sp_preparesql). Для трассировки жутко неудобно. 3) У меня была масса ошибок, типа "Row cannot be located for updating. Some values may have been changed since it was last read", "Multiple-step operation generated errors. Check each status value". Со всеми справился, но... как в анекдоте "впечатление осталось" :). В BDE с такими глюками никогда не встретишься. 2 pkarklin: Вот дилемма... С D7 только шапочно познакомился, а тут серьезный проект. Стал писать на D5. Имеет ли смысл переходить именно на D7? И отдельно, насколько сложен переход на DBExpress, если многое завязано именно на view, instead of триггера и отложенные изменения? Nobody faults but mine... (LZ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 12:56 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
С D7 только шапочно познакомился, а тут серьезный проект. Если проект серъезный и сроки сжатые, то лучше использовать компоненты доступа, с которыми есть опыт работы. Чтоб перейти на DBExpress, придеться еще и c TClientDataSet повозиться. Чем мне понравилось DBExpress, так это тем, что это тонкая надстройка непосредственно над OLEDB. Компоненты DBExpress позволяют с наименьшими накладными расходами получить однонаправленный небуфферизированный набор данных на клиенте, чтоб потом замутит кэширование на базе TClientDataSet. У последнего тоже есть глюки, а у кого их нет. Но TClientDataSet не связывает мне руки, так как TADODataSet, то нельзя, это не делай. Вообщем, после долгих лет работы с кэшированными изменениями на основе BDE для меня другой альтернативы, кроме как DBExpress + TClientDataSet нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 13:04 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
>>1) ADO сильно чувствительно к типу полей. TADO может быть. ADO работает как часы >>2) все запросы ADO оформляет как sp_executesql (или sp_preparesql). Интересно, как это у вас получилось. Ни разу не встречал. Правда я работаю с ADO а не с TADO компонентами >>3) У меня была масса ошибок, типа "Row cannot be located for updating. ... В ADO (не в TADO компонентах) такие ошибки встречаются только при своих собственных ошибках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 13:15 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
>>2) все запросы ADO оформляет как sp_executesql (или sp_preparesql). Интересно, как это у вас получилось. Ни разу не встречал. Правда я работаю с ADO а не с TADO компонентами ADO не заварачивает в sp_executesql тока инструкции, отправляемы тока через ADOConnection.Execute. А вот вызов метода ADORecordSet.Open с запросом приводит к тому самому sp_executesql. Это есть факт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 13:17 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
>>А вот вызов метода ADORecordSet.Open с запросом приводит к тому >>самому sp_executesql. Это есть факт. Факт вот. Имеем Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Выполняем Код: plaintext 1. 2. SQL Profiler показывает Код: plaintext без всяких sp_executesql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 14:04 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
Ну конечно я имел ввиду TADO... компоненты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 14:17 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, под TADO понимается борландовские компоненты ADO??? Но там никаких sp_execute, sp_prepare, разумеется, нет. Открытие запроса идет непосредственно как Recordset.Open(...). Тогда откуда же берется эти вызовы? Порылся в MSDN: хотя явного указания как выполняются запросы пока не нашел, но вот кусочек, который относится к MSSQL7 и ADO 2.1, не думаю, что для MSSQL2k/ADO 2.8 что принципиально изменилось. ...When using the SQLOLEDB provider with client side cursors... . When tracing the SQL statements sent by the client application with SQL Server Profiler, a sequence of statements similar to the following can be observed: SQL Server 7.0 sp_prepare @P1 output, N'@P1 varchar(40)', N'select au_fname, au_lname from pubs..authors where au_lname like @P1', 1 select @P1 sp_unprepare 1 sp_executesql N'select au_fname,au_lname from pubs..authors where au_lname like @P1', N'@P1 nvarchar(2)', N'M%' Кто может прояснить ситуацию? Nobody faults but mine... (LZ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2003, 11:49 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
2 aag Кто может прояснить ситуацию? Ты ж сам все прояснил, приведя цитату из доки. ЕСли используются клиентские курсоры, то идет вызов sp_executesql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2003, 12:11 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
Ха. Действительно. 1. TADODataSet - клиентский курсор - select top 100 * from выполняется в обертке sp_ececutesql 2. Теперь моя оболочка над ADO FRecordSet.CursorLocation := adUseClient; - тоже клиентский FRecordSet.CursorType := adOpenStatic; FRecordSet.LockType := adLockBatchOptimistic; select top 100 * from - никаких sp_ececutesql и в помине нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2003, 12:40 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
Ага, только использовать серверные курсоры можно в весьма ограниченных случаях. В самом распостраненном - DataSet + DBGrid уже не получится. 2 ZrenBy: И чем же отличается ваша оболочка от TADODataSet? Особенно если учесть, что все упирается все-таки в само ADO? Nobody faults but mine... (LZ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2003, 14:14 |
|
||
|
Перевод большого проекта с BDE на ADO
|
|||
|---|---|---|---|
|
#18+
Дерьмо это ADO в связке Delphi + MS SQL как и все предназначенное быть универсальным (всеядным). Лучше всего SDAC или ZEOS. Правда, насчет последнего нужно учитывать, что работает через db-library, т.е. устаревший способ с соответствующими ограничениями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2003, 07:45 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32300018&tid=2116271]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 407ms |

| 0 / 0 |
