Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получение списка имен источников данных ODBC в Delphi без использования решений от третьих лиц

Delphi , Графика и Игры , Canvas

В статье мы рассмотрим, как получить список имен источников данных ODBC в Delphi без использования решений от третьих лиц. Это может быть полезно, когда вам нужно работать только с стандартными компонентами Delphi.

Одним из способов получения списка имен источников данных ODBC является чтение данных из раздела реестра HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\ODBC Data Sources. Однако, некоторые пользователи могут искать более надежный и стандартный способ сделать это, не обращаясь к реестру.

Подтвержденный ответ заключается в использовании функции SQLDataSources из ODBC32.DLL. Эта функция возвращает список всех источников данных ODBC, доступных на локальной машине. Вот пример кода на Object Pascal (Delphi), который демонстрирует, как это можно сделать:

program GetODBCDataSources;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  Winapi.Windows,
  Winapi.OleDb,
  Winapi.ODBC;

function SQLAllocEnv(var EnvironmentHandle: PODBCEnvironment): LongWord; stdcall; external 'odbc32.dll';
function SQLFreeEnv(EnvironmentHandle: PODBCEnvironment): LongWord; stdcall; external 'odbc32.dll';
function SQLDataSources(
  EnvironmentHandle: PODBCEnvironment;
  Direction: LongWord;
  var ServerName: PAnsiChar;
  BufferLength1: LongWord;
  var NameLength1: LongWord;
  var Description: PAnsiChar;
  BufferLength2: LongWord;
  var NameLength2: LongWord): LongWord; stdcall; external 'odbc32.dll';

const
  SQL_SUCCESS = 0;
  SQL_NO_DATA = 100;
  SQL_FETCH_NEXT = 1;
  SQL_FETCH_FIRST = 2;

var
  EnvironmentHandle: PODBCEnvironment;
  ServerName, Description: AnsiString;
  Len1, Len2: LongWord;

begin
  if SQLAllocEnv(@EnvironmentHandle) = SQL_SUCCESS then
  try
    if SQLDataSources(
      EnvironmentHandle,
      SQL_FETCH_FIRST,
      ServerName[0],
      SizeOf(ServerName),
      Len1,
      Description[0],
      SizeOf(Description),
      Len2) = SQL_SUCCESS then
    repeat
      Writeln('Name:' + ServerName);
      Writeln('Description:' + Description);
      Writeln('');
      if SQLDataSources(
        EnvironmentHandle,
        SQL_FETCH_NEXT,
        ServerName[0],
        SizeOf(ServerName),
        Len1,
        Description[0],
        SizeOf(Description),
        Len2) = SQL_NO_DATA then
        Break;
    until False;
  finally
    SQLFreeEnv(EnvironmentHandle);
  end;
  Readln;
end.

Этот код выделяет память под окружную среду ODBC, используя функцию SQLAllocEnv, а затем вызывает функцию SQLDataSources для получения списка источников данных ODBC. Результаты выводится на консоль в виде имен и описаний источников данных.

Альтернативный ответ заключается в том, что чтение данных из раздела реестра HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\ODBC Data Sources также является допустимым способом получения списка имен источников данных ODBC. Однако, использование функции SQLDataSources из ODBC32.DLL является более стандартным и надежным способом.

Создано по материалам из источника по ссылке.

В статье рассматривается способ получения списка имен источников данных ODBC в Delphi без использования решений от третьих лиц, путем использования функции SQLDataSources из ODBC32.DLL.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Canvas ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:32:36/0.0053019523620605/1