![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать ODBC DSN через код (в программе)? [D6, D7, MSSQL, dBase, FoxPro]
Killus © (2005-01-24 01:51:00)Собственно сабж^ Как созздать источноик данных в программе? Какие модули-классы-объекты-методы. Желательно показать кусочком кода если есть. Спасибо!
Danilka (2005-01-24 14:09:00) [1][8] sniknik © (24.01.05 13:02)
> но сдесь явно не тот случай (MSSQL).
мда, на список баз я не посмотрел.. :)
sniknik (2005-01-24 13:02:00) [2]Danilka © (24.01.05 12:28) [7]
ну вообщето я тоже встречал (например Parvasive 7.0 ODBC драйвер для Windows NT (на 2000 почемуто с той же установки работало без DSN))
но сдесь явно не тот случай (MSSQL).
Danilka (2005-01-24 12:28:00) [3][6] sniknik © (24.01.05 12:21)
Ну, вообще-то я встречал драйвера, которые напрямую не позволяют коннект, через строку коннекта, обязательно надо описывать DSN.
Например, odbc драйвер для ИБ: ib6xtg10.zip.
sniknik (2005-01-24 12:21:00) [4]чемуто не тому учишся. нафига тебе ODBC DSN? легче сделать коннект без него. (если используется ADO, если же BDE то готовься к "небольшому" геморою (это для [D6, D7, MSSQL, dBase, FoxPro]), для DBExpress тоже не нужны DSN-ы)
Killus (2005-01-24 12:04:00) [5]Точно! Я пока только учусь :)! Спасибо огромное, теперь все ясно!
sniknik (2005-01-24 11:57:00) [6]естественно, и она уже подключена
вот это не заметил?
function SQLConfigDataSource (
hwndParent: HWND; // Указатель на окно вызвавшее функцию
fRequest: WORD; // Тип запроса
lpszDriver: PChar; // Пользовательское имя драйвера
lpszAttributes: PChar // атрибуты
): Boolean; stdcall; external 'odbccp32.dll' name 'SQLConfigDataSource';
Killus (2005-01-24 08:39:00) [7]кстати, не понятно где взять ф-цию SQLConfigDataSource. Какой модуль подключать нужно???
Killus (2005-01-24 08:28:00) [8]Круто! Главное, где копать я понял - в реестре! :) Спасибо!
sniknik (2005-01-24 08:07:00) [9]
1
fReg:= TRegistry.Create;
fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True);
fReg.WriteString('Database', 'Documents');
fReg.WriteString('Description', ' ');
fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
fReg.WriteString('Flag', '1');
fReg.WriteString('Password', '');
fReg.WriteString('Port', ' ');
fReg.WriteString('Server', 'xmark');
fReg.WriteString('User', 'winuser');
fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
fReg.WriteString('DocumentsFab', 'MySQL');
fReg.CloseKey;
fReg.Free;
2
////////////////////////////////////////////////////////////////////////////////
//
// Модуль управления источниками DNS
//
////////////////////////////////////////////////////////////////////////////////
unit DNSConf;
interface
uses
Windows, Registry;
function AddDNSMSSQLSource (const ADNSName, AServer, ADataBase: String; ADescription: String = ''): Boolean;
function SQLConfigDataSource (
hwndParent: HWND; // Указатель на окно вызвавшее функцию
fRequest: WORD; // Тип запроса
lpszDriver: PChar; // Пользовательское имя драйвера
lpszAttributes: PChar // атрибуты
): Boolean; stdcall; external 'odbccp32.dll' name 'SQLConfigDataSource';
const
ODBC_ADD_DSN = 1; // Add data source
ODBC_CONFIG_DSN = 2; // Configure (edit) data source
ODBC_REMOVE_DSN = 3; // Remove data source
implementation
{******************************************************************************
* AddDNSMSSQLSource - добавляет (модифицирует) пользовательский DNS-источник
* для доступа с MS SQL серверу
* Дополнительно в клиентских настройках прописывается
* протокол TCP/IP и порт 1433
*
* Вход: ADNSName - имя DNS-источника
* AServer - имя сервера
* ADataBase - наименование БД на сервере по умолчанию
* ADescription - описание источника (необязательный параметр)
*
* Выход: TRUE - в случае успеха, FALSE - в противном случае
******************************************************************************}
function AddDNSMSSQLSource (const ADNSName, AServer, ADataBase: String; ADescription: String = ''): Boolean;
const
driver = 'SQL Server';
var
params: String;
// эта ф-ция прописывает необходимые настройки для доступа к MS SQL по TCP/IP и на порт 1433
function SetNetLibParam: Boolean;
begin
Result := FALSE;
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('\Software\Microsoft\MSSQLServer\Client', TRUE) then
if NOT KeyExists('ConnectTo') then
CreateKey('ConnectTo');
if OpenKey('ConnectTo', TRUE) then
begin
WriteString(AServer,'DBMSSOCN,' + AServer + ',1433');
Result := TRUE;
end;
finally
CloseKey;
Free;
end;
end;
begin
params := 'DSN=' + ADNSName + #0'Server=' + AServer + #0'DataBase= ' + ADataBase + #0'Description=' + ADescription + #0#0;
Result := SQLConfigDataSource(0, ODBC_ADD_DSN, PChar(driver), PChar(params));
Result := Result AND SetNetLibParam;
end;
end.
http://www.rsdn.ru/qna/default.asp?db/datasrc.xml
http://www.bbd.net.ru/modules.php?op=modload&name=News&file=article&sid=16
http://www.firststeps.ru/mfc/odbc/r.php?14
(если еще действуют ;)