Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Вниз

Как создать 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.06 c
14-1107197461
pika
2005-01-31 21:51
2005.02.20
медия форматы


1-1107740278
TReader
2005-02-07 04:37
2005.02.20
Как правильно использовать ReadInteger в TReader ?


8-1099699905
Лёха
2004-11-06 03:11
2005.02.20
JpegImage в TFileStream


10-1083894604
makey22
2004-05-07 05:50
2005.02.20
Замена текста в Word XP


1-1107854169
Mouserx
2005-02-08 12:16
2005.02.20
Продолжительность работы потока





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский