Форум: "Базы";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизПоиск записи. Найти похожие ветки
← →
suharew (2005-09-02 21:35) [0]Добрый вечер. Только начал осваивать firebird. и сразу вопрос.
К базе я кое как законектился, таблицу открыл.
можно ли использовать следующее:
Query1.locate(....); и
while not query1.eof do
begin
.....
end;
В книге я прочитал что нельзя использовать методы next, prior, insert. и.т.д. а надо использовать SQL. но тогда как сделать перебор записей всей таблицы?????????
← →
Alexander Panov © (2005-09-02 21:45) [1]suharew (02.09.05 21:35)
В книге я прочитал что нельзя использовать методы next, prior, insert.
Что за дурная книга попала тебе в руки?
← →
Zacho © (2005-09-02 21:49) [2]suharew (02.09.05 21:35)
Всё можно. А что именно использовать - зависит от конкретной задачи.
← →
suharew (2005-09-02 21:52) [3]"Delphi 7 в подлиннике Наиболее полное руководство " аж 1200 страниц.
Глава 25 Средства работы с удаленными БД.
Цитата с книги: Для реализации реляционного доступа к удаленной БД с помощию BDE необходимо использовать только средства языка SQL. Поэтому в качестве компонентов должны выбираться Query, StoredProc, updateSql. Кроме того для набора данных нельзя использовать методы, характерные для навигационного способа например next, prior, insert.
Судя по твоему ответу. Все это ерунда, что пишут.
← →
Alexander Panov © (2005-09-02 22:01) [4]suharew (02.09.05 21:52) [3]
Для реализации реляционного доступа к удаленной БД с помощию BDE необходимо использовать только средства языка SQL
Вот эту фразу забудь.
Всегда используется тот метод, который оптимальней.
Мало ли чего напишут в книжках.
Если в данный момент тебе нужно просто корректировать вручную, либо посредством сложного алгоритма данные в таблице, смело используй TTable.
Если есть возможность использовать групповую замену данных(UPDATE ... ), используй другой метод.
SQL UPDATE эффективнее, но не всегда применим, поэтому говот\рить катгорично, как сказано в книге, совершенно неправильно.
while not query1.eof do
begin
.....
end;
замени на
Table1.First
while not query1.eof do
begin
.....
end;
← →
Alexander Panov © (2005-09-02 22:01) [5]последний абзац попал случайно - не смотри это -
while not query1.eof do
begin
.....
end;
замени на
Table1.First
while not query1.eof do
begin
.....
end;
← →
Zacho © (2005-09-02 22:04) [6]suharew (02.09.05 21:52) [3]
Обрати внимание на слова "Для реализации реляционного доступа .."
А вот если выше (или ниже) в тексте этой книге не объясняется, в каких случаях желательно применять реляционные способы, а в каких - навигационные, то действительно - ерунда книжка.
А вообще, могу посоветовать Шумаков, Фаронов "Дельфи 5. Руководство разработчика баз данных"
← →
suharew (2005-09-02 22:06) [7]Все понял. Я написал программу для Парадокса вот теперь перехожу на firebird. т.е. получается мне всего-то надо перенести данные в другие таблицы и код не надо переписывать, за исключением коннекта к серверу.??
← →
Zacho © (2005-09-02 22:08) [8]suharew (02.09.05 22:06) [7]
Лучше вообще всё полностью переделать, и программу и структуру БД. А то рискуешь получить тормозное глюкало. Впрочем, случаи разные бывают :)
И не стоит использовать BDE для работы с IB
← →
suharew (2005-09-02 22:14) [9]>И не стоит использовать BDE для работы с IB
почему?
Лучше использовать компоненты со страницы InterBase????
← →
Zacho © (2005-09-02 22:28) [10]suharew (02.09.05 22:14) [9]
Да.
Есть и другие компоненты/технологии доступа к IB без BDE. Выбирай по потребностям и возможностям.
Кратко опишу, почему не стоит использовать BDE.
1. BDE уже мертво.
2. BDE не поддерживает полноценное управление транзакциями IB. Да и ещё много чего не поддерживает.
3. BDE много чего делает "само", "прозрачно" для программиста и не позволяет в это вмешаться. В результате может получится ситуация, когда вполне нормально работающая программа при каких-либо условиях перестаёт работать, и ничего кроме полной переделки программы с BDE на что-либо другое сделать нельзя.
Ну и ещё можно аргументы найти, но мне пока ломы :)
← →
Desdechado © (2005-09-02 22:41) [11]Боюсь, что употребленная выше терминология новичку понятна не будет...
1. Методы Next, Prior и подобные есть не только в TTable, но и в упомянутом TQuery, и их можно и нужно использовать.
2. Ttable я бы не рекомендовал все-таки применять, ибо очень медленно и неочевидно то, что происходит внутри. Лучше все-таки запросы с наборами данных (SELECT) и модифицирующие (UPDATE,DELETE).
3. При переносе программы с Парадокса на IB лучше сразу озадачиться проблемой многопользовательского доступа к БД, почитать о принципах такой работы. Здесь TTABle - только вред.
4. БДЕ универсален, но в силу этого малофункционален, многого не умеет, что умеют "заточенные" под конкретные СУБД компоненты типа IBExpress.
← →
Zacho © (2005-09-02 22:44) [12]2 suharew :
Кстати, вот полезная для тебя ссылка:
http://www.ibase.ru/develop.htm
Обрати внимание на http://www.ibase.ru/devinfo/ibx.htm
← →
Alexander Panov © (2005-09-02 22:52) [13]Zacho © (02.09.05 22:28) [10]
Desdechado © (02.09.05 22:41) [11]
Вполне успешно использую для своих задач как BDE, так и ADO, а также(при необходимости работы с IB/FB) компоненты с соответствующей закладки Delphi.
Об умирании BDE говоирить не стоит, так как это один из самых простых методов доступа ко многим базам данных.
← →
Desdechado © (2005-09-02 23:01) [14]умирает-умирает :)
ибо БДЕ не развивается
а только движение - жизнь, недвижение - смерть
← →
Zacho © (2005-09-02 23:16) [15]Alexander Panov © (02.09.05 22:52) [13]
Об умирании BDE говоирить не стоит
Борланд прекратил развитие и поддержку BDE. Imho - это смерть.
> Вполне успешно использую для своих задач как BDE
Ситуации, конечно, разные бывают, но..
Дело в том, что использовать для работы с IB другие компоненты доступа можно гораздо успешнее. Я понимаю, когда в старых пректах продолжается использование BDE. Но начинать новый проект (или переделывать старый на другую СУБД) используя BDE - imho, не стоит. Уж слишком много у него недостатков по сравнению с другими движками.
А насчёт простоты - да, используя BDE можно практически не уделять внимания работе с транзакциями. А в результате получить приложение, которое даже при сравнительно небольшой нагрузке намертво весит сервер. Преценденты были, именно с IB. Вообще, невозможность полноценно управлять транзакциями - imho главный недостаток BDE при работе с IB.
← →
}{ander © (2005-09-03 10:16) [16]2 Alexander Panov © (02.09.05 22:52) [13]
> Вполне успешно использую для своих задач как BDE
Вы очень смелый человек! (я серьезно).
2 Zacho © (02.09.05 22:04) [6] and to all
Обрати внимание на слова "Для реализации реляционного доступа .."
А кто-нибудь знает, что такое "реляционный доступ"? Честно говоря, очень странное сочетание слов... Никогда такого не встречал.
← →
Виталий Панасенко (2005-09-03 11:37) [17]
> Desdechado © (02.09.05 23:01) [14]
> умирает-умирает :)
> ибо БДЕ не развивается
> а только движение - жизнь, недвижение - смерть
А половая жизнь - сплошное движение..:-)) А если серьезно, то можно и TTable использовать... Есть способ не очень снизить производительность... Нужно по ключевым полям (и, кажись, по всем индексированным) в локальной БД построить аналогичные индексы, но только DESC для ЖарПтицы... При этом на таблице в несколько сот тысяч (и больше) перемещение осуществляется практически мгновенно... Но при переходе с парадокса будут проблемы с сответствием типа (особенно, Дата/Время) полей... Да и писАть программу с использованием возможностей сервера наааааамного проще...Это мое мнение...
← →
Anatoly Podgoretsky © (2005-09-03 14:11) [18]Desdechado © (02.09.05 23:01) [14]
В части применения с dBase/Paradox развитие и не требуется, поскольку сами базы не развиваются. А для других баз лучше использовать другие технологии.
БДЕ сначало было сделано для Парадокса и после покупки Борландом dBase и оно было пристегнуто к нему, без наличия для этих двух баз альтернативных технологий, не зря же Микрософт личензировало БДЕ для включения их в свои продукты доступа JET/ODBC при работе с этими двумя базами, включая и раннии версии ФоксПро.
А вот то что Борланд решило пойти дальше и включила драйвера и для других баз может быть и не плохо, но вот только она не смогла сделать это нормально, с учетом развития этих баз. Включить то включила и при этом и заморозила.
Для себя я давно сделал выбор, если Парадокс и дбейс (особенно версии 7), то не вижу альтернативы в других технологиях от Микрософт и Борланда, да и в альтернативных движках тоже, а вот для других баз не вижу применимости в БДЕ, только во вред.
← →
Anatoly Podgoretsky © (2005-09-03 14:12) [19]Кстати по поводу АДО, как мне кажется Борланд пристегнуло его к VCL весьма плохо.
← →
Zacho © (2005-09-04 17:09) [20]}{ander © (03.09.05 10:16) [16]
А кто-нибудь знает, что такое "реляционный доступ"?
Я знаю, точнее догадываюсь, что имел в виду автор книги. :)
Это работа с данными методами реляционной алгебры. Например, с помощью SQL, который на ней и основывается. :)
Если не знаете, что такое "реляционная алгебра" - читайте учебники :)
← →
Zacho © (2005-09-04 17:14) [21]Кстати, в подтверждение моего поста [15], вот отрывок из статьи гораздо более авторитетного, чем я, специалиста :
Существование IBTransaction дает возможность не только управлять параметрами транзакций целиком и полностью, но и полноценно управлять стартом и завершением транзакций. Возможно, если вы раньше работали с BDE, где практически никакого управления транзациями нет (одна транзакция на коннект), и ваша система имела мало пользователей (до 10-20-ти), то вы не испытывали никаких проблем. Действительно, BDE самостоятельно стартует и завершает транзакции в нужный момент. Однако, вся проблема в том, что получить эффективную многопользовательскую систему без явного управления транзакциями можно только в том случае, когда промежуточное звено (компоненты, BDE и т.п.) гарантирует, что длительность транзакций будет минимальна. Если же управлять транзакциями явно, то можно создать еще более эффективную систему. В противном случае "автоматизированность" управления транзакциями приведет к тому, что приложения будут чаще попадать на блокировки записей, сервер будет страдать от большого числа одновременно активных транзакций, или в базе будет накапливаться мусор из-за того, что какая-то транзакция активна с самого утра рабочего дня.
Весь ужас в том, что при отсутствии контроля над транзакциями вы не можете понять, что происходит. Производительность системы может деградировать с каждым часом, и сделать практически ничего нельзя (кроме рестарта сервера и обретения спокойствия еще на несколько часов).
(c) KDV, www.ibase.ru, 2005
← →
}{ander © (2005-09-05 09:55) [22]2 Zacho © (04.09.05 17:09) [20]
> Я знаю, точнее догадываюсь, что имел в виду автор книги. :)
Я тоже примерно догадываюсь. Однако, мне кажется, если автор соединяет два слова (в данном случае "реляционный" и "доступ"), то он вкладывает в это определенный смысл, который должен донести до читателя, а не предоставлять ему возможность самому додумать, что же он сказал на самом деле.
> Если не знаете, что такое "реляционная алгебра" - читайте учебники :)
Ну зачем же так сразу с плеча рубить?-)
← →
Zacho © (2005-09-05 10:02) [23]}{ander © (05.09.05 9:55) [22]
он вкладывает в это определенный смысл, который должен донести до читателя, а не предоставлять ему возможность самому додумать, что же он сказал на самом деле.
Возможно, где-то в книге это и объясняется. Я же её не читал, так что не знаю :) А возможно, это издержки перевода, если книга переводная.
> Ну зачем же так сразу с плеча рубить?-)
Да я и не сомневался, что именно ты знаешь :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.144 c