Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TQuery and TTable


ForX ©   (2006-02-20 14:22:00) 

В гриде всегда должны быть показаны все записи таблицы БД. Есть ли разница в использовании компонентов TTable. И TQuery с запросом SELECT *


Lexer   (2006-02-20 18:14:00) [1]

>Есть ли разница в использовании компонентов TTable. И TQuery с запросом SELECT *
Да есть, хотя бы например то, что Table делает 5 запросов вместо 1:

1. хочет убедиться, что выбранная нами таблица существует.
2. выбирает список полей выбранной таблицы, их названий, типов, условий проверки и т.п.
3.выбирает информацию об индексах указанной таблицы. Определяется, есть ли среди них первичный ключ, и по каким полям построены индексы.
4.почти повторяет второй, и выбирает информацию о полях - условия проверки, "вычисляемость" поля, допустимость NULL и прочее.
5.открывает таблицу, формируя запрос SELECT FIELD1, FIELD2, ... FROM TABLE ORDER BY PK_FIELD ASC.


Sergey13   (2006-02-20 15:36:00) [2]

2[15] Asail   (20.02.06 15:19)
>Спрашивет (в виде SQL-запроса) клиент, а результат высчитывает и передает обратно клиенту в виде результирующего НД - соответствующий BDE-драйвер (парадокса, например). См. LocalSQL.

Именно. Но при этом для файловых БД драйвер открывает файл(ы)и выбирает из него (из них) нужное. Все это происходит на клиенте. Для серверных БД драйвер просто передает запрос серверу, и тот уже (у себя) отбирает нужное и возвращает клиенту только результат.


Ega23   (2006-02-20 15:29:00) [3]


> а результат высчитывает и передает обратно клиенту в виде
> результирующего НД - соответствующий BDE-драйвер (парадокса,
>  например). См. LocalSQL.


Что касается парадокса - то может быть. А если это не парадокс, а, например, Oracle?


Asail   (2006-02-20 15:19:00) [4]

Спрашивет (в виде SQL-запроса) клиент, а результат высчитывает и передает обратно клиенту в виде результирующего НД - соответствующий BDE-драйвер (парадокса, например). См. LocalSQL.
Или я недопонимаю чего?


Sergey13   (2006-02-20 15:18:00) [5]

2 [12] ForX   (20.02.06 15:15)
> .Я где прочитал что в Акцесе, TQuery посылает запросы минуя BDE/
И подключается он к базе не через TADOConnection/
Тогда он называется не TQuery, а T ADOQuery


Ega23   (2006-02-20 15:17:00) [6]


> .Я где прочитал что в Акцесе, TQuery посылает запросы минуя
> BDE/
> И подключается он к базе не через TADOConnection/


Почитай "где-то ещё". TQuery, TTable и TStoredProc работают ТОЛЬКО через BDE.


ForX   (2006-02-20 15:15:00) [7]


> Asail   (20.02.06 15:05) [9]
>
>
> > Sergey13 ©   (20.02.06 15:00) [8]
>
> BDE, например.


.Я где прочитал что в Акцесе, TQuery посылает запросы минуя BDE/
И подключается он к базе не через TADOConnection/


Sergey13   (2006-02-20 15:08:00) [8]

2[9] Asail   (20.02.06 15:05)
>BDE, например.
Чего BDE? Само спрашивает, само отвечает?


Ega23   (2006-02-20 15:07:00) [9]


> BDE, например.


При чём тут BDE?


Asail   (2006-02-20 15:05:00) [10]


> Sergey13 ©   (20.02.06 15:00) [8]

BDE, например.


Sergey13   (2006-02-20 15:00:00) [11]

2[7] Asail   (20.02.06 14:54)
> ИМХО, не только в серверных.
И кто в Парадоксе или Аксесе отвечает на запросы? Файлы самостоятельно?


Asail   (2006-02-20 14:54:00) [12]


> Sergey13 ©   (20.02.06 14:32) [4]

ИМХО, не только в серверных.


> ForX   (20.02.06 14:35) [5]

> значит в первом случае, другой клиент не сможет выполнить
> TTable.open ???


сможет. если БД не открывать как Exclusive


Ega23   (2006-02-20 14:39:00) [13]


> значит в первом случае, другой клиент не сможет выполнить
> TTable.open ???
>


Забудь про TTable как класс. Совет.


ForX   (2006-02-20 14:35:00) [14]

[1]
> Есть. В одном случае ты захватываешь таблицу, в другом -
>  можно многим прочитать.


значит в первом случае, другой клиент не сможет выполнить TTable.open ???


Sergey13   (2006-02-20 14:32:00) [15]

2ForX   (20.02.06 14:22)
>Есть ли разница в использовании компонентов TTable. И TQuery с запросом SELECT *
В серверных БД TTable транслируется как TQuery  с запросом SELECT * From Table.


Asail   (2006-02-20 14:31:00) [16]


> всегда должны быть показаны все записи таблицы БД

Если так, то нет разницы.
ИМХО TTable.Open делает тот-же SELECT * FROM table_name


Tonich   (2006-02-20 14:25:00) [17]

ну TTable держит все записи в таблици а TQuery лишь те которые прошли критерии...


Ega23   (2006-02-20 14:24:00) [18]

Есть. В одном случае ты захватываешь таблицу, в другом - можно многим прочитать.
Вообще-то это плохой путь. ИМХО. Очень редко получается, что достаточно Select * сделать. Как правило НД связывается ещё с несколькими таблицами, для удобоваримости.


Наверх

Титульная страница Поиск, карта сайта Написать письмо