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

Вниз

Как создать ODBC DSN через код (в программе)?   Найти похожие ветки 

 
Killus ©   (2005-01-24 01:51) [0]

Собственно сабж^ Как созздать источноик данных в программе? Какие модули-классы-объекты-методы. Желательно показать кусочком кода если есть. Спасибо!


 
sniknik ©   (2005-01-24 08:07) [1]


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
(если еще действуют ;)


 
Killus ©   (2005-01-24 08:28) [2]

Круто! Главное, где копать я понял - в реестре! :) Спасибо!


 
Killus ©   (2005-01-24 08:39) [3]

кстати, не понятно где взять ф-цию SQLConfigDataSource. Какой модуль подключать нужно???


 
sniknik ©   (2005-01-24 11:57) [4]

естественно, и она уже подключена
вот это не заметил?

function  SQLConfigDataSource (
hwndParent: HWND;    // Указатель на окно вызвавшее функцию
fRequest: WORD;      // Тип запроса
lpszDriver: PChar;  // Пользовательское имя драйвера
lpszAttributes: PChar // атрибуты
): Boolean;  stdcall; external "odbccp32.dll" name "SQLConfigDataSource";


 
Killus ©   (2005-01-24 12:04) [5]

Точно! Я пока только учусь :)! Спасибо огромное, теперь все ясно!


 
sniknik ©   (2005-01-24 12:21) [6]

чемуто не тому учишся. нафига тебе ODBC DSN? легче сделать коннект без него. (если используется ADO, если же BDE то готовься к "небольшому" геморою (это для [D6, D7, MSSQL, dBase, FoxPro]), для DBExpress тоже не нужны DSN-ы)


 
Danilka ©   (2005-01-24 12:28) [7]

[6] sniknik ©   (24.01.05 12:21)
Ну, вообще-то я встречал драйвера, которые напрямую не позволяют коннект, через строку коннекта, обязательно надо описывать DSN.
Например, odbc драйвер для ИБ: ib6xtg10.zip.


 
sniknik ©   (2005-01-24 13:02) [8]

Danilka ©   (24.01.05 12:28) [7]
ну вообщето я тоже встречал (например Parvasive 7.0 ODBC драйвер для Windows NT (на 2000 почемуто с той же установки работало без DSN))
но сдесь явно не тот случай (MSSQL).


 
Danilka ©   (2005-01-24 14:09) [9]

[8] sniknik ©   (24.01.05 13:02)
> но сдесь явно не тот случай (MSSQL).

мда, на список баз я не посмотрел.. :)



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

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

Наверх




Память: 0.49 MB
Время: 0.032 c
1-1107333696
GreySerg
2005-02-02 11:41
2005.02.20
Как задать Title приложения при Group similar taskbar buttons ?


4-1104770694
STK
2005-01-03 19:44
2005.02.20
Открыть и закрыть чужую программу.


3-1106116756
Russko
2005-01-19 09:39
2005.02.20
DBGridEh - подгонка ширины колонки


9-1100950280
Bryke
2004-11-20 14:31
2005.02.20
Индексация


11-1091790406
nester
2004-08-06 15:06
2005.02.20
Как сделать в TabControl чтобы стили XP не глючили?