Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.17;
Скачать: CL | DM;

Вниз

связь с БД   Найти похожие ветки 

 
Cabyrc ©   (2009-03-17 11:01) [0]

Каким образом в Delphi головной модуль связать с любой из распространенных СУБД (Access, MySQL, Oracle, FoxPro, InterBase), при этом соединение должно быть динамическим, т.е. пользователь при помощи диалогового окна выбирает БД, с которой будут производиться вычисления???


 
Ega23 ©   (2009-03-17 11:05) [1]

Легко. Генерить ConnectionString в динамике, и все дела.


 
stas ©   (2009-03-17 16:48) [2]

Если ADO
PromptDataSource(Application.Handle,Connection);


 
Cabyrc ©   (2009-03-18 06:30) [3]

1) При помощи ConnectionString в динамике файл самой БД должен ведь обязательно лежать в директории с exe-файлом нашего скомпилированного проекта, насколько мне известно. А реализация проекта иная, пользователь открывает готовый про-дукт, выбирает нужную ему БД, после чего идет подключение проги к выбранной БД и вывод данных таблиц на экран??
2) Что за PromptDataSource?? И где его искать??


 
Медвежонок Пятачок ©   (2009-03-18 08:56) [4]

При помощи ConnectionString в динамике

здесь речь не про тот динамик. это не спикер внутри корпуса.


 
Ega23 ©   (2009-03-18 09:04) [5]


> файл самой БД должен ведь обязательно лежать в директории
> с exe-файлом нашего скомпилированного проекта, насколько
> мне известно.


Учи матчасть.


 
Медвежонок Пятачок ©   (2009-03-18 09:05) [6]

файл самой БД должен ведь обязательно лежать в директории с exe-файлом нашего скомпилированного проекта, насколько мне известно

Любой пример из папки demos\db покажет, что это небылица.


 
Коммуноцентрист1   (2009-03-18 09:05) [7]


> Cabyrc ©   (18.03.09 06:30) [3]
> При помощи ConnectionString в динамике файл самой БД должен
> ведь обязательно лежать в директории с exe-файлом

в общем случае распространенная БД может находиться в неизвестном кол-ве файлов, раскиданных по разным директориям. Соответественно, вид ConnectionString формализовать довольно сложно, там  указываются не обязательно файлы.


 
sniknik ©   (2009-03-18 10:27) [8]

> в неизвестном кол-ве файлов, раскиданных по разным директориям.
и даже больше, она может находится в разделе отделенном от файловой системы оси, поддерживаемом непосредственно сервером бд.
т.е. там где само понятие директория/файл недействительно...


 
Ega23 ©   (2009-03-18 10:32) [9]

а сам сервер может на другой стороне земного шара находиться.


 
Anatoly Podgoretsky ©   (2009-03-18 11:15) [10]


> Учи матчасть.

Жизнь его накажет строго.


 
Плохиш ©   (2009-03-18 12:12) [11]

Как хорошо всё начиналось

> Cabyrc ©   (17.03.09 11:01)
>
> Каким образом в Delphi головной модуль связать с любой из
> распространенных СУБД (Access, MySQL, Oracle, FoxPro, InterBase),
>  при этом соединение должно быть динамическим

а в итоге, как всегда

> Cabyrc ©   (18.03.09 06:30) [3]
>
> 1) При помощи ConnectionString в динамике файл самой БД
> должен ведь обязательно лежать в директории с exe-файлом
> нашего скомпилированного проекта, насколько мне известно.
>


 
stas ©   (2009-03-18 17:38) [12]

Cabyrc ©   (17.03.09 11:01)
Советую для начала разобраться с работой Delphi+ADO+Access.


 
Cabyrc ©   (2009-03-19 09:02) [13]

Вот как раз я здесь и для того чтоб разобраться! Форум он и нужен для этой цели! По ходу работы у меня возникают соответствующие вопросы, на которые хочется услышать вразумительные ответы, а не остроумные подковырки. Коль нечего подсказать, так и не стоит сюда писать и запутывать больше!
И на сколько мне известно при помощи того же самого ConnectionString указывается имя и расширения соответствующей БД. А для меня с точки зрения программиста, интересует вопрос связанный с тем что я не знаю не названия, не расширения БД. Она (БД) может быть одной из пяти распространенных: Access, MySQL, Oracle, FoxPro, InterBase. И путь к ней я тоже не знаю, его указывает пользователь проги.


 
pavel_guzhanov ©   (2009-03-19 09:13) [14]

При использовании ADO можно
var CS:String;
begin
CS:=PromptDataSource(Handle, CS);
ADOConnection1.ConnectionString:=CS;
...
end;

Для InterBase можно и самому сваять диалог, позволяющий вводить/выбирать имя сервера и путь к базе данных на этом сервере.


 
ЮЮ ©   (2009-03-19 09:31) [15]


> И на сколько мне известно при помощи того же самого ConnectionString
> указывается имя и расширения соответствующей БД


Имя СЕРВЕРА БД и имя БАЗЫ ДАННЫХ, забудь про файлы.
FoxPro не в счет.


> Она (БД) может быть одной из пяти распространенных: Access,
>  MySQL, Oracle, FoxPro, InterBase


А у распространненных серверов БД, как ни странно, совершенно разный синтаксис SQL.

Поэтому, универсальная программа может работать только на TTable от BDE, только кому она нафиг нужна такая "универсальеость" :)


 
Плохиш ©   (2009-03-19 10:26) [16]


> Cabyrc ©   (19.03.09 09:02) [13]
>
> Вот как раз я здесь и для того чтоб разобраться! Форум он
> и нужен для этой цели!

Ты заблуждаешься.

> Коль нечего подсказать, так и не стоит сюда писать и запутывать
> больше!

Бедный, запутаный

> И на сколько мне известно при помощи того же самого ConnectionString
> указывается имя и расширения соответствующей БД.

С такими знаниями могу посоветовать только начать с основ. Написать первую программу "Hello world!"


 
Сергей М. ©   (2009-03-19 10:35) [17]


> пользователь при помощи диалогового окна выбирает БД


Имеется ввиду диалоговое окно выбора файла или директории ?
Или что ?


 
Anatoly Podgoretsky ©   (2009-03-19 14:59) [18]

> Cabyrc  (19.03.2009 9:02:13)  [13]

Так это понимание для чего нужен форум и кто имеет право писать и как в твою ветку вне пределов твоих возможностей, на то и форум, что каждый сам это решает.


 
Anatoly Podgoretsky ©   (2009-03-19 15:01) [19]

> Плохиш  (19.03.2009 10:26:16)  [16]

Это сложно, начать надо с написания программы "Hello"


 
Cabyrc ©   (2009-03-20 08:10) [20]


> ЮЮ

Универсальность такая нужна!!!  Да спору нет синтаксис отличается, но в этих БД самая простая таблица и запрос к ней будет тоже самым простым (выбрать все из имеющейся таблицы).


> Сергей М.

Да, именно это и имеется ввиду!


> Плохиш и Anatoly Podgoretsky

Вы два алежи и этим все сказано!


 
Сергей М. ©   (2009-03-20 08:43) [21]


> Cabyrc ©   (20.03.09 08:10) [20]


> именно это и имеется ввиду


И что же, по-твоему, должен будет выбрать юзер в случае подключения, например, к InterBase-серверу, когда тот находится на удаленном хосте ?


 
ЮЮ ©   (2009-03-20 09:17) [22]


> Универсальность такая нужна!!!  Да спору нет синтаксис отличается,
>  но в этих БД самая простая таблица и запрос к ней будет
> тоже самым простым (выбрать все из имеющейся таблицы).


В таком случае совершенно не понятно к чему MySQL, Oracle, InterBase

Ибо одна таблица - это не база. Ну да ладно.

Тогда возможные варианты:
BDE, TTable, использование алиаса.
Настройка клиента на нужную базу сводится к настройке алиса в BDE администраторе.

ADO, TADOTable, использование udl-файла.
Настройка на клиенте сводится к настройке соединения - udf-файла

В обоих случаях возможно использовать ODBC. Ещё один посредник сделает БАЗУ весомее :)


 
Cabyrc ©   (2009-03-20 09:31) [23]


> Сергей М.

Удаленный доступ не рассматривпется, все находится на локальной машине


 
Cabyrc ©   (2009-03-20 09:32) [24]


> Сергей М.

Удаленный доступ не рассматривпется, все находится на локальной машине


 
ЮЮ ©   (2009-03-20 09:37) [25]


> Удаленный доступ не рассматривпется, все находится на локальной
> машине
>


Ну тогда точно без Oracle не обойтись :)

Ну и зачем тогда такое разнообразие. Кому захочется ставить на локалку сервер из-за одной таблицы? Зачем он вообще нужен?

Как вариант - TClientDataSet c SaveToFile/LoadToFile


 
Плохиш ©   (2009-03-20 10:27) [26]


> Cabyrc ©   (20.03.09 09:31) [23]
>
>
> > Сергей М.
>
> Удаленный доступ не рассматривпется, все находится на локальной
> машине
>

К чему тогда упоминания MySQL, Oracle? Или вы эти слова где-то слышали?


 
Плохиш ©   (2009-03-20 10:28) [27]


> Cabyrc ©   (20.03.09 09:31) [23]

Запусти для образования мастер создания строки подключения в делфи и посмотри как окно выбора меняется для выбора разных субд.


 
ЮЮ ©   (2009-03-20 10:29) [28]


> К чему тогда упоминания MySQL, Oracle? Или вы эти слова
> где-то слышали?


Но, к сожалению, не видели. И мечтали их увидеть в OpenDialog1 :)


 
corban   (2009-03-23 06:20) [29]

нда... флудить-то вы умеете... чел просил конкретной помощи, а получил как обычно


 
Palladin ©   (2009-03-23 08:20) [30]


> corban   (23.03.09 06:20) [29]

он ее получил в самом первом ответе, потом еще и во втором... какие проблемы?


 
Palladin ©   (2009-03-23 08:21) [31]


> corban   (23.03.09 06:20) [29]

хотя, конечно, ни ты, ни он его не поняли... ну что ж, удачи вам, господа...


 
Anatoly Podgoretsky ©   (2009-03-23 08:51) [32]

Автор после получения ответов сначала стал нести ахинею, а потом и претензии предъявлять, что его на учат.


 
Плохиш ©   (2009-03-23 11:49) [33]


> corban   (23.03.09 06:20) [29]
>
> нда... флудить-то вы умеете...

Да и вы не отстаёте...


 
Ega23 ©   (2009-03-23 12:27) [34]

автор, тебе сюда
http://www.connectionstrings.com/
Когда выучишь - можешь дальше вопросы задавать.


 
Sinusoid   (2009-04-01 16:05) [35]

Если пользователь выбирает базу данных руками )) то нужно использовать OpenDialog со всеми вытекающими последствиями ))


 
Ega23 ©   (2009-04-01 16:10) [36]


> то нужно использовать OpenDialog


Да ну? А я вот комбобокс обычный использую, это как, нормально? :)


 
Jeer ©   (2009-04-01 16:50) [37]


> Ega23 ©   (01.04.09 16:10) [36]
>
>
> > то нужно использовать OpenDialog
>
>
> Да ну? А я вот комбобокс обычный использую, это как, нормально?
>  :)
>


Конечно не нормально.
Ну как же обойтись без диалога выбора файла :)



Страницы: 1 вся ветка

Текущий архив: 2009.05.17;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.015 c
15-1236840903
PHProgger
2009-03-12 09:55
2009.05.17
MySQL - TRIM in function


2-1238564131
Руслан
2009-04-01 09:35
2009.05.17
update


2-1238931635
andreil
2009-04-05 15:40
2009.05.17
Вызов виртуальных методов посредством ассемблера


8-1194257144
sdaf
2007-11-05 13:05
2009.05.17
вэб камеры в проекте


11-1200570250
Rocket
2008-01-17 14:44
2009.05.17
OpenDirDialog.InitialPath при UNICODE_CTRLS...