Главная страница
    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.47 MB
Время: 0.053 c
1-1107468516
k@rt
2005-02-04 01:08
2005.02.20
Ico + Toolbar


9-1099760624
Xeno
2004-11-06 20:03
2005.02.20
Анимация MD3 в GLScene


11-1091774698
Ricko
2004-08-06 10:44
2005.02.20
7 битная кодировка


9-1099355998
ballack
2004-11-02 03:39
2005.02.20
DelphiX, движение пули


1-1107773125
salexn
2005-02-07 13:45
2005.02.20
Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский