Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
1

Объясните пожалуйста "на пальцах" смысл компонента ADOConnection

05.02.2016, 20:38. Показов 3255. Ответов 64
Метки нет (Все метки)

Пока у меня база на локальном компе, использую ADOQuery или ADOTable, у них есть параметр ConnectionString. Теперь нужно будет БД выложить на сервер. Я так понимаю, нужно будет подсоединяться с помощью ADOConnection. Объясните пожалуйста попроще, что у ADOConnection такого, чего нету у ADOQuery, к примеру. Прошу без иронии, понимаю, что глупый вопрос.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2016, 20:38
Ответы с готовыми решениями:

Объясните на "пальцах": может ли Access DB быть серверной?
Всем привет! Сходу к делу! Много читал и запутался в итоге) Постараюсь коротко и самую суть....

Объясните смысл задачи "3 конвейера"
Никак не могу понять, что такого сложного в следующей задаче, которая в книге помечена...

Пожалуйста, составьте программу, которая из слов"СТРАХ","БЕЛКА","ЦЫПЛЁНОК" получает слово "СТОЛБЕЦ"
Пожалуйста, составьте программу, которая из слов"СТРАХ","БЕЛКА","ЦЫПЛЁНОК" получает слово "СТОЛБЕЦ".

Объясните на пальцах алгоритм работы, пожалуйста)
Отдельные фрагменты кода приветствуются)))

64
3760 / 3204 / 845
Регистрация: 29.08.2013
Сообщений: 21,154
Записей в блоге: 2
05.02.2016, 20:46 2
не помню как там в ADO, но дальше query отвечает только за запросы, а connection именно за подключение к БД и работе с этим подключением
0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
05.02.2016, 20:51  [ТС] 3
Т.е., как я понимаю подключиться можно и через ADOQuery, через ConnectionString, но у ADOConnection больше свойств и возможностей связанных именно с подключением, правильно я понимаю? И если у меня одна БД, то я могу на форме создавать один ADOConnection и к нему уже подключать все ADOQuery и ADOTable, правильно?
0
5025 / 3918 / 1296
Регистрация: 14.04.2014
Сообщений: 18,020
Записей в блоге: 18
05.02.2016, 21:39 4
скорее всего, если использовать AdoQuery.connectionString
неявно создается компонент ADOConnection
для чего так сделано неизвестно

нормальный сценарий подразумевает, что есть подключение (Connection) к бд, которое совместно используют компоненты типа Query Dataset и другие
0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
05.02.2016, 21:48  [ТС] 5
Тогда вопрос сколько раз создавать ADOConection, если одна БД, один раз на форме и привязывать к нему все Query и Table или к каждому свое создавать, или может на всю программу сделать один ADOConnection и к нему все что есть привязывать? От чего это зависит?
0
5025 / 3918 / 1296
Регистрация: 14.04.2014
Сообщений: 18,020
Записей в блоге: 18
05.02.2016, 21:52 6
в простом случае создается модуль данных, на него кладется ADOConnection и все остальные компоненты работы с БД
этот модуль прописывается в Uses всех форм и пользуемся им одним
в простейшем случае все лежит вообще на одной единственной форме
в сложных случаях все решения принимаются по необходимости
иногда создаются независимые потоки, которые создают каждый себе подключение и всякие Query
1
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,281
05.02.2016, 22:24 7
krapotkin, +1

Цитата Сообщение от edsjeka Посмотреть сообщение
Сколько раз создавать ADOConection, если одна БД, один раз на форме и привязывать к нему все Query и Table
Вот именно. В этом же и соль. Вы ОДИН раз создаёте коннектион и через него подключаете все остальные компоненты. Без этого возможны косяки.
0
пофигист широкого профиля
4411 / 2906 / 823
Регистрация: 15.07.2013
Сообщений: 16,757
05.02.2016, 23:31 8
Вообще родные для ADO компоненты это TADOConnection, TADODataset и TADЩCommand. А ТADOQuery и ТADOTable это костыли.
0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
06.02.2016, 12:48  [ТС] 9
У меня в ADOConnecton получается такая длинная ConnectionString:

Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=Z:\Project5\DB\Cartriges.accdb;Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False;
Это нормально?
Я хочу задавать ее программно, чтобы путь к БД читался из файла. Мне нужно всю эту строку запихивать в ConnectionString или что-то можно выкинуть отсюда?
0
3760 / 3204 / 845
Регистрация: 29.08.2013
Сообщений: 21,154
Записей в блоге: 2
06.02.2016, 15:25 10
Цитата Сообщение от edsjeka Посмотреть сообщение
Мне нужно всю эту строку запихивать в ConnectionString
задай 1 раз и все
Цитата Сообщение от edsjeka Посмотреть сообщение
или что-то можно выкинуть отсюда
попробуй пустые значения убрать, а и вообще зачем?
0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
06.02.2016, 15:48  [ТС] 11
Правильно я вообще мыслю?
У меня в программе есть куча форм, на каждой из которых есть свой ADOConnection, к нему привязываются все ADOQuery, ADOTable, которые есть на этой форме. При открытии формы я для ADOConnection.ConnectionString присваиваю вот это длинной значение, только путь к БД считываю из файла, вставляю в эту строку и делаю Connected:=true;, Table и Query активирую если нужно. Потом при закрытии формы делаю разрыв соединения. И так для каждой формы, сколько форм, столько у меня будет и ADOConnection, правильно?
0
3760 / 3204 / 845
Регистрация: 29.08.2013
Сообщений: 21,154
Записей в блоге: 2
06.02.2016, 16:06 12
нет
connection один, а квери столько сколько будет ОДНОВРЕМЕННЫХ запросов
в вашем случае скорее всего тоже один

Цитата Сообщение от edsjeka Посмотреть сообщение
У меня в программе есть куча форм
куча форм не нужна

Цитата Сообщение от edsjeka Посмотреть сообщение
к нему привязываются все ADOQuery, ADOTable, которые есть на этой форме
query нужен только ОДИН, на всю программу

Table можно заменить на StringGrid?
0
5025 / 3918 / 1296
Регистрация: 14.04.2014
Сообщений: 18,020
Записей в блоге: 18
06.02.2016, 17:39 13
про Query - 1 не очень согласен
наоборот, обычно в таких программах открывается сразу пачка датасетов
qUsers, qStudents, qSubjects и т.д.
0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
06.02.2016, 19:15  [ТС] 14
Цитата Сообщение от qwertehok Посмотреть сообщение
нет
connection один, а квери столько сколько будет ОДНОВРЕМЕННЫХ запросов
в вашем случае скорее всего тоже один
Connection один на каждую форму или на всю программу?
Цитата Сообщение от qwertehok Посмотреть сообщение
куча форм не нужна
А как без кучи форм, если куча справочников и под каждый нужна форма, это как минимум?

Добавлено через 7 минут
Цитата Сообщение от edsjeka Посмотреть сообщение
А как без кучи форм, если куча справочников и под каждый нужна форма, это как минимум?
Кажется, я начинаю понимать, Query и все справочники открывать на одной форме в зависимости от запроса.. так? Но тогда ведь может быть неудобно, в одном справочнике может быть 2 столбца, а в другом их может быть 10..
0
3760 / 3204 / 845
Регистрация: 29.08.2013
Сообщений: 21,154
Записей в блоге: 2
06.02.2016, 19:53 15
Цитата Сообщение от edsjeka Посмотреть сообщение
Connection один на каждую форму или на всю программу?
один на всю программу

Цитата Сообщение от edsjeka Посмотреть сообщение
А как без кучи форм, если куча справочников и под каждый нужна форма, это как минимум?
ЗАЧЕМ?

пихаете все справочники в ListBox, по клику на нем выводите нужный справочник в Table

Цитата Сообщение от edsjeka Посмотреть сообщение
Но тогда ведь может быть неудобно, в одном справочнике может быть 2 столбца, а в другом их может быть 10.
если сделать запрос SELECT * FROM TABLE
то у вас в Query будет и RowCount и FieldsCount
обработать это все и будет вам удобно

Цитата Сообщение от krapotkin Посмотреть сообщение
наоборот, обычно в таких программах открывается сразу пачка датасетов
qUsers, qStudents, qSubjects и т.д.
зачем? можно в квери обойти все справочники, получить все локально. зачем куча квери?
0
3760 / 3204 / 845
Регистрация: 29.08.2013
Сообщений: 21,154
Записей в блоге: 2
06.02.2016, 19:57 16
вот примерно так
0
Миниатюры
Объясните пожалуйста "на пальцах" смысл компонента ADOConnection  
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
06.02.2016, 20:10  [ТС] 17
Цитата Сообщение от qwertehok Посмотреть сообщение
Сообщение от edsjeka
А как без кучи форм, если куча справочников и под каждый нужна форма, это как минимум?
ЗАЧЕМ?
Да, все становится с ног на голову, Вы уж извините за глупые вопросы, я просто учился в самом конце 90-х и тут приспичило попрограммировать. Благо, что есть такие форумы и можно быстро стать на путь истинный. А когда я учился, были только бумажные книги и то в дефиците и стоили не дешево.

Добавлено через 5 минут
У меня тут еще один вопрос назрел, правда не по теме. Оказывается, то что я БД создавал в Access, теперь приносит много проблем и мне теперь рекомендуют перейти на что-то типа MySQL. Подскажите, если делать на MySQL это придется весь код переделывать или только таблицы переделать и продолжать пользоваться Delphi? Я ж так понимаю, что если у меня проблемы с базами Access, то Delphi тут ни при чем, правильно?
0
3760 / 3204 / 845
Регистрация: 29.08.2013
Сообщений: 21,154
Записей в блоге: 2
06.02.2016, 20:14 18
edsjeka, я учился в начале 20-х и у нас тоже было куча форм, но это неправильно.
зачем для одинаковых задач лепить свою форму?

Добавлено через 3 минуты
отказ от акцесса это правильно.

я бы предложил MSSQL\SQLIte\Firebird\MySQL - именно в таком порядке (но это мое ИМХО)

Цитата Сообщение от edsjeka Посмотреть сообщение
придется весь код переделывать или только таблицы переделать и продолжать пользоваться Delphi
если вы не использовали внутренних аксессовских примочек типа связывания данных, то придется проверить только правильность запросов - диалект SQL немного различается
0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
06.02.2016, 20:57  [ТС] 19
Цитата Сообщение от qwertehok Посмотреть сообщение
я бы предложил MSSQL\SQLIte\Firebird\MySQL - именно в таком порядке (но это мое ИМХО)
Если база не большая, но нужна сетевая версия, что тогда лучше будет?

Добавлено через 1 минуту
Цитата Сообщение от qwertehok Посмотреть сообщение
если вы не использовали внутренних аксессовских примочек типа связывания данных, то придется проверить только правильность запросов - диалект SQL немного различается
Ну обычные связи между таблицами использовал, надеюсь это не усугубит переход на другую СУБД.

Добавлено через 2 минуты
Дайте, тогда ответ на вообще глупый вопрос. Delphi это ведь тоже СУБД или нет? Или это только язык программирования? Он может работать с БД, с запросами и т.д., но почему он не может создавать БД?
0
3760 / 3204 / 845
Регистрация: 29.08.2013
Сообщений: 21,154
Записей в блоге: 2
06.02.2016, 21:20 20
Цитата Сообщение от edsjeka Посмотреть сообщение
Если база не большая, но нужна сетевая версия
MS SQL Express 2012

Цитата Сообщение от edsjeka Посмотреть сообщение
но почему он не может создавать БД?
делфи работает с БД через их драйвера. БД может создавать, но только SQL запросом
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2016, 21:20

Функция callback. Объясните пожалуйста на пальцах!
Вот как я понимаю обычную функицю (инструкцию определения функции "Function Declaration", смотреть...

UncaughtExceptionHandler, объясните все на пальцах пожалуйста
есть программа которая работает не корректно, но для начала хотелось бы не разобрать ошибки, а что...

Заменить надписи "новинка", "спецпредложение" и "лидер продаж" в шаблоне компонента
День добрый. Уже второй день ищу информацию по этому вопросу. Может и элементарщина, но мне она не...

Объясните, пожалуйста, что это за процедура "unpack"?
объясните пожалуйста ,что это за профедура repeat unpack (q^.key,buf,1);


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.