Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

базой данных и Ado

13K
13 мая 2006 года
koss
20 / / 13.05.2006
Я обычно связываю ТADOConnection c базой данных через :
 
Код:
#define Constr   "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=\"DBQ="+GetCurrentDir()+"\\Firma.mdb;DefaultDir="+GetCurrentDir()+";Driver={Driver do Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;FILEDSN="+GetCurrentDir()+"\a;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;\""

ADOConnection1->ConnectionString= Constr;
ADOConnection1->Connected=true;

но но как можно программно подключить в ( Панель управления -> Администрирование -> Источники данных (ODBC) ) системный DSN
А лучше так,чтобы он находил базу данных в GetCurrentDir()+"\\фирма\\Firma.mdb
13K
13 мая 2006 года
koss
20 / / 13.05.2006
Всё я функцию замутил создания системного DSN'а
Код:
bool  TForm1::RegDB()
{
AnsiString S,Windir;
TRegistry *Registry=new TRegistry(KEY_ALL_ACCESS);
char Win[MAX_PATH];
GetWindowsDirectory(Win, MAX_PATH);
S=GetCurrentDir() + "\\Firma.mdb";
Windir = (AnsiString)Win + "\\system32\\odbcjt32.dll";
Registry->RootKey=HKEY_LOCAL_MACHINE; Registry->OpenKey("SOFTWARE\\ODBC\\ODBC.INI\\rigel",true); Registry->WriteString("DBQ",S);
Registry->WriteString("Driver",Windir);
Registry->WriteString("FIL","MS Access;");
Registry->WriteString("UID","");
Registry->WriteInteger("DriverId",25);
Registry->WriteInteger("SafeTransactions",0);
Registry->OpenKey("Engines\\Jet",true);
Registry->WriteString("ImplicitCommitSync","");
Registry->WriteString("UserCommitSync","Yes");
Registry->WriteInteger("MaxBufferSize",2048);
Registry->WriteInteger("PageTimeout",5);
Registry->WriteInteger("Threads",3);
Registry->CloseKey();
Registry->OpenKey("SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources",true);
Registry->WriteString("rigel","Driver do Microsoft Access (*.mdb)");
Registry->CloseKey();
}
RegDB();
ADOConnection1->Connected=0;
ADOConnection1->ConnectionString="Provider=MSDASQL.1;Persist Security Info=False;Data Source=rigel";
ADOConnection1->Connected=1;
ADOQuery1->Active=1;

всё работает ,конечно предыдущий способ был короче но зато база регистрируется в системе.
Если у кого есть другие варианты ,если кто знает как через файловый DSN,то ответьте
Я уже 2 способа подключения знаю.Я их уже коллекционировать начинаю.
10
14 мая 2006 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by koss
Если у кого есть другие варианты ,если кто знает как через файловый DSN,то ответьте


Ни хрена DSN никакой не нужен, можно строку соединения без него создать. Помнится, получалось. Сейчас под рукой нет, проверить не могу. Способ простой - создается строка подключения обычным способом, а потом из нее удаляется все лишнее. Только драйвер не забудь указать. Драйвер - единственное, на что опирается ADO при инициализации. Остальное - обвязка, ее можно опустить.

Почему-то программисты предпочитают носиться в ADO с DSN, а в BDE - с alias-ами, хотя есть более простые решения.

13K
14 мая 2006 года
koss
20 / / 13.05.2006
[Почему-то программисты предпочитают носиться в ADO с DSN, а в BDE - с alias-ами, хотя есть более простые решения]
Мой друг незнаю как в BDE но у нас в АДО базу данных лучше зарегистрировать чем постоянно её подключать и текущий каталог GetCurrentDir'ом распозновать.через регистрацию можно изменять текущий каталог б.д. ,а не таскать её постоянно в каталоге с прогой.

Не знаю как ты там только драйвер указывал но сто пудов на другом компе твоя база данных не работала.
1
14 мая 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by koss
[Почему-то программисты предпочитают носиться в ADO с DSN, а в BDE - с alias-ами, хотя есть более простые решения]
Мой друг незнаю как в BDE но у нас в АДО базу данных лучше зарегистрировать чем постоянно её подключать и текущий каталог GetCurrentDir'ом распозновать.через регистрацию можно изменять текущий каталог б.д. ,а не таскать её постоянно в каталоге с прогой.

Не знаю как ты там только драйвер указывал но сто пудов на другом компе твоя база данных не работала.


Вот такая строка подключения

 
Код:
Provider=MSDASQL.1;Persist Security Info=True;User ID=Admin;Extended Properties=\"DBQ=C:\\ХХХ\\хххх.mdb;DefaultDir=C:\\ХХХ;Driver={Driver do Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;FILEDSN=;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;\";Initial Catalog=C:\\ХХХ\\хххх

без особых проблем подключит базу с именем хххх.mdb которая находится в директории ХХХ без каких либо источников данных. Я надеюсь не нужно показывать как сформировать строку используя переменные такие как имя драйвера, директория, имя базы и т.д.?
Не понятно, причем здесь - "а не таскать её постоянно в каталоге с прогой"- ведь насколько я понял - существует возможность просто указать в настройках где собственно файл находится - и какими такими характеристиками отличается ваш АДО от стандарта? :) DSN - это инструмент который помогает организовать работу с базой нескольких приложений единообразно. В случае одного приложения - мне кажется его использование не удобно и не практично. ИМХО.
13K
14 мая 2006 года
koss
20 / / 13.05.2006
А мне надо сетевую базу написать.То как мне лучше
через системный DSN делать или или просто путём формирования строки подключения
В защиту DNS'а .А если базу данных в другой каталог переместили то можно через панель инструментов её новый каталог быстро определить.
1
14 мая 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by koss
А мне надо сетевую базу написать.То как мне лучше
через системный DSN делать или или просто путём формирования строки подключения
В защиту DNS'а .А если базу данных в другой каталог переместили то можно через панель инструментов её новый каталог быстро определить.


Да делай в первую очередь так как тебе удобно. Я предпочитаю использовать строку подключения - по одной простой причине - есть механизм обновления - если что либо меняется сисадмину не нужно обходить все машины и менять настройки ДНС - все делается автоматически и ручной настройки минимум - плюс нет необходимости лезть в панель администрирования. Для меня это изрядный плюс - и при том вобщем то я ничего не теряю. :) А как поступать тебе - тебе и решать.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог