Главная страница
    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.043 c
4-1104774029
Davinchi
2005-01-03 20:40
2005.02.20
Как заставить мою прогу не показывать себя на панели задач...


4-1105198646
Arnold
2005-01-08 18:37
2005.02.20
Как создать RichEdit с помощью WinApi


1-1107409966
fynjy1984
2005-02-03 08:52
2005.02.20
DBGridEh и копирование


8-1099765447
VasRog
2004-11-06 21:24
2005.02.20
Яркость и формат цвета


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