Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
Существует ли на свете компоненты Delphi для прямого доступа к MS SQL? Пока работал через BDE, но говорят что он тормозит. И тут я решил сравнить. Было протестировано: ADO, SQLDirect*, SQLQuery* (*были скачаны Trial-версии с сайтов разработчиков) Были получены следующие результаты: ADO - глючит сразу при открытии (все советы из Инета не помогли) SQLDirect - открылся нормально, но при попытке выполнить ApplyUpdate, происходит внутреняя ошибка. SQLQuery - открывается и сохраняется нормально, пока дело не дошло до Blob-поля. При попытке достать из него значение происходит внутреняя ошибка в коде компонента. Народ, существуют ли еще способы доступа без BDE к MS SQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2002, 13:15 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
ADO - глючит сразу при открытии (все советы из Инета не помогли) Если по Вашему ADO, написаноое MS, глючит, откуда такая уверенность, что другие компоненты, написанные мелкими фирмами не будут глючить? Нравиться или нет, но придётся пользоваться АДО, остальные направления тупиковые. Да и что-то у Вас ну просто всё и сразу глючит. Так не бывает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2002, 07:19 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
Могу сказать про SQLQuery. ИМХО самые быстрые компоненты. А для Blob полей надо вроде бы поставить в свойствах ExecuteOptions -> eoCacheToDisk в True. Тогда будет нормально. Сам сталкивался с этой проблемой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2002, 08:42 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
Я бы порекомендовал использовать ADO и только ADO! MS SQL и ADO - это, практически, родственные души У Delphi начиная с 5-й версии (кажется) есть вкладка компонентов ADO, как раз для работы с различными SQL серверами. Работает этот движок вполне нормально и не нужно на него наговаривать. Что в тоем понимании глючит? Глюк это понятие относительное, особенно если не знаешь как правильно ADO лучше поставить последнее 2.6x (кажется). Если используется Delphi 5, то нужно установить патч для этой версии ADO (известная проблема с BOF, EOF or record deleted), который есть на сайте Borland. В любом случае, BDE не нужно использовать для работы с MS SQL, неправильно это. А что касается Blob-ов, то тут отдельная беседа и, по-моему, проблем может быть больше на серверной стороне чем на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2002, 09:06 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
SQLQuery без сомнения быстрые и качественные компоненты, НО они работают через dblib - а это опять же тупиковый путь развития. Кто знает, сколько времени мелкомягкие будут еще поддерживать библиотеку??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2002, 09:13 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
IMHO, уже давно не поддерживают. Просто копируют. Ибо поддержка типов в DB-lib осталась на уровне MSSQL6.5 ADO/OLE-DB - единственное верное направление. Для Delphi, кроме собственных ADO компонент, существуют еще и сторонние, использующие ADO или OLE-DB. Хотя, я бы порекомендовал приручить все-таки TADODataSet (TADOQuery и TADOStoredProc использовать не надо). Все трудности с ним возникают только на начальном этапе. А потом, как по маслу. Если есть стойкая аллергия на ADO/OLE-DB, то есть ещё старая добрая технология - ODBC. Для работы через ODBC имеется хорошо зарекомендовавший себя фришный компонент mODBC. На torry он есть. ODBC живет и развивается, и несмотря на желание MS его похоронить, ещё очень долго будет жить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2002, 10:15 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
Спасибо всем, кто откликнулся на мою проблему. Что касается ADO, то мне просто необходимо использовать T*StoredProc, так как все запросы находятся на SQL-сервере. Причем проблема возникла в обновлении данных на сервере, ведь в TADOStoredProc нет свойства UpdateObject. В документации написано, что он должен делать все самостоятельно, но на практике он вообще ничего не делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2002, 10:56 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
2 Глеб Уфимцев Можно вкратце услышать почему не нужно использовать TADOQuery и TADOStoredProc? Сколько работал, особых проблем не возникало, да и как же без этих компонентов вообще работать? Чем лучше TADODataSet чем TADOQuery? Имхо, это несколько разные вещи. И зачем его приручать? 2 Aleksandr Что такое UpdateObject? У TADOStoredProc есть метод ExecProc (если не путаю) и этого достаточно чтобы запустить процедуру. Чем должно быть свойство UpdateObject мне не понятно :-\ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2002, 12:04 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
> Можно вкратце услышать почему не нужно использовать TADOQuery и TADOStoredProc? Потому что так рекомендует фирма борланд: вместо TADOQuery и TADOStoredProc использовать TADODataSet. TADOQuery и TADOStoredProc введены только для облегчения перехода с TQuery и TStoredProc. TADODataSet перекрывает ПОЛНОСТЬЮ функциональность и TADOQuery, и TADOStoredProc. > Чем лучше TADODataSet чем TADOQuery? Имхо, это несколько разные вещи. Вообще-то, это одно и то же, по большому счету. Просто в TADODataSet реализована (вытащена в public) бОльшая функциональность, и этот компонент более близок к идеологии ADO. > И зачем его приручать? Имелось в виду, что люди не рождаются сразу с умением отлично и беспроблемно применить ADO-компоненты. Нужен некий естественный небольшой период времени на осваивание этих компонент. Этот период я неудачно назвал приручением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2002, 13:07 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
Я вижу, что все работают через ADO. Значит это хорошо. Тогда следующий вопрос: как универсально выполнять операции Update, Insert и Delete в таблице, которая открыта с помощью TADOStoredProc? Дело в том, что у меня в проекте несколько десятков таблиц, доступ к которым создается динамически. Используется N-Tier технология. В BDE делалось следующее: создавалась на стороне сервера цепочка TDataSetProvider - TStoredProc - TUpdateSQL. На стороне клиента TDCOMConnection - TClientDataSet - TDataSource. Причем все цепочки на клиенте и на сервере создаются по мере необходимости. В TUpdateSQL на основе открытых полей для клиента создаются правила обновления полей на сервере. В BDE это все понятно, а как это сделать на ADO? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2002, 19:06 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
А у меня есть еще один вопрос(давно возник, но шибко не мешает), как мне кажется в тему будет: в TADOQuery есть запрос: SELECT a.*, b.name FROM table1 a, table2 b WHERE a.Id=b.Id Он отображается через Grid, ну и автоматом обновляются данные на серваке. Так вот, можно ли сделать так, чтобы обновлялись, только данные в TABLE1, а поле NAME из таблицы TABLE2 не апдейтелось? Вариант сделать NAME как LOOKUP поле не предлагать, т.к. мне интересно именно то, что я спросил (я, кстати, так и делаю теперь, где это возможно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2002, 05:02 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
Читать тут: http://www.delphikingdom.com/helloworld/ado01.htm http://www.delphikingdom.com/helloworld/ado02.htm http://www.delphikingdom.com/helloworld/ado03.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2002, 06:31 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! В библиотеке VGLib (http://www.vglib.com/link-0.html) есть аналог TUpdateSQL для ADO. Он как раз работает через MIDAS. Желаю успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2002, 10:00 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
Вставлю и свои 10 копеек: Использовать TADODataSet& TADOCommand предпочтительнее хотябы из-за того, что у них открыто св-во CommandTimeout - очень знаете ли иногда не хватает "вшитых" в TADOQuery и TADOStoredProc 30 секунд. И еще помню на какой-то глюк с TADOStoredProc напоролся, а на какой - вылетело из головы. Тока я после этого во всем приложении менял TADOStoredProc на TADODataSet. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2002, 15:11 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
Случайно не то, что TADOStoredProc возвращает в DataSet первый SELECT из процедуры (например в случае последовательного: SELECT * FROM T1 SELECT * FROM T2 второй не будет доступен?) если да, то как обходить? (я переделывал процедуры) покась ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2002, 04:58 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
>Случайно не то, что TADOStoredProc возвращает в DataSet первый SELECT из процедуры >(например в случае последовательного: >SELECT * FROM T1 >SELECT * FROM T2 >второй не будет доступен?) Не совсем понятно, чего вы хотите получить: чтобы вернулись оба SELECT'а? И каким интересно образом? Либо я вас неверно понял, и вам нужен только второй select (что мною понимаемо) - тогда подозреваю, что SET NOCOUNT ON в начале процедуры вас спасет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2002, 08:15 |
|
||
|
Delphi+MS SQL без BDE?
|
|||
|---|---|---|---|
|
#18+
Может, скорее поможет SELECT **** UNION SELECT **** ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2002, 10:56 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32022507&tid=1823988]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 361ms |

| 0 / 0 |
