базой данных и Ado
ADOConnection1->ConnectionString= Constr;
ADOConnection1->Connected=true;
но но как можно программно подключить в ( Панель управления -> Администрирование -> Источники данных (ODBC) ) системный DSN
А лучше так,чтобы он находил базу данных в GetCurrentDir()+"\\фирма\\Firma.mdb
{
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 способа подключения знаю.Я их уже коллекционировать начинаю.
Если у кого есть другие варианты ,если кто знает как через файловый DSN,то ответьте
Ни хрена DSN никакой не нужен, можно строку соединения без него создать. Помнится, получалось. Сейчас под рукой нет, проверить не могу. Способ простой - создается строка подключения обычным способом, а потом из нее удаляется все лишнее. Только драйвер не забудь указать. Драйвер - единственное, на что опирается ADO при инициализации. Остальное - обвязка, ее можно опустить.
Почему-то программисты предпочитают носиться в ADO с DSN, а в BDE - с alias-ами, хотя есть более простые решения.
Мой друг незнаю как в BDE но у нас в АДО базу данных лучше зарегистрировать чем постоянно её подключать и текущий каталог GetCurrentDir'ом распозновать.через регистрацию можно изменять текущий каталог б.д. ,а не таскать её постоянно в каталоге с прогой.
Не знаю как ты там только драйвер указывал но сто пудов на другом компе твоя база данных не работала.
[Почему-то программисты предпочитают носиться в ADO с DSN, а в BDE - с alias-ами, хотя есть более простые решения]
Мой друг незнаю как в BDE но у нас в АДО базу данных лучше зарегистрировать чем постоянно её подключать и текущий каталог GetCurrentDir'ом распозновать.через регистрацию можно изменять текущий каталог б.д. ,а не таскать её постоянно в каталоге с прогой.
Не знаю как ты там только драйвер указывал но сто пудов на другом компе твоя база данных не работала.
Вот такая строка подключения
без особых проблем подключит базу с именем хххх.mdb которая находится в директории ХХХ без каких либо источников данных. Я надеюсь не нужно показывать как сформировать строку используя переменные такие как имя драйвера, директория, имя базы и т.д.?
Не понятно, причем здесь - "а не таскать её постоянно в каталоге с прогой"- ведь насколько я понял - существует возможность просто указать в настройках где собственно файл находится - и какими такими характеристиками отличается ваш АДО от стандарта? :) DSN - это инструмент который помогает организовать работу с базой нескольких приложений единообразно. В случае одного приложения - мне кажется его использование не удобно и не практично. ИМХО.
через системный DSN делать или или просто путём формирования строки подключения
В защиту DNS'а .А если базу данных в другой каталог переместили то можно через панель инструментов её новый каталог быстро определить.
А мне надо сетевую базу написать.То как мне лучше
через системный DSN делать или или просто путём формирования строки подключения
В защиту DNS'а .А если базу данных в другой каталог переместили то можно через панель инструментов её новый каталог быстро определить.
Да делай в первую очередь так как тебе удобно. Я предпочитаю использовать строку подключения - по одной простой причине - есть механизм обновления - если что либо меняется сисадмину не нужно обходить все машины и менять настройки ДНС - все делается автоматически и ручной настройки минимум - плюс нет необходимости лезть в панель администрирования. Для меня это изрядный плюс - и при том вобщем то я ничего не теряю. :) А как поступать тебе - тебе и решать.