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

Создаём SystemDSN при помощи Delphi

Delphi , Базы данных , Alias

Создаём SystemDSN при помощи Delphi

Этот пример показывает один из способов создания ODBC драйвера для доступа к файлу Access MDB. Подобная операция применима к большинству файлов баз данных. Естевственно, Вам потребуется MDB файл, для того, чтобы связать его с DSN.


const
  ODBC_ADD_DSN = 1;        // Добавляем источник данных
  ODBC_CONFIG_DSN = 2;     // Конфигурируем (редактируем) источник данных
  ODBC_REMOVE_DSN = 3;     // Удаляем источник данных
  ODBC_ADD_SYS_DSN = 4;    // Добавляем системный DSN
  ODBC_CONFIG_SYS_DSN = 5; // Конфигурируем системный DSN
  ODBC_REMOVE_SYS_DSN = 6; // удаляем системный DSN

type
  TSQLConfigDataSource = function( hwndParent: HWND; fRequest: WORD;
  lpszDriver: LPCSTR; lpszAttributes: LPCSTR ) : BOOL; stdcall;

procedure Form1.FormCreate(Sender: TObject);
var
  pFn: TSQLConfigDataSource;
  hLib: LongWord;
  strDriver: string;
  strHome: string;
  strAttr: string;
  strFile: string;
  fResult: BOOL;
  ModName: array[0..MAX_PATH] of Char;
  srInfo : TSearchRec;
begin
  Windows.GetModuleFileName( HInstance, ModName, SizeOf(ModName) );
  strHome := ModName;
  while ( strHome[length(strHome)] <> '\' ) do
    Delete( strHome, length(strHome), 1 );
  // Тестовая база данных (Axes = Access)
  strFile := strHome + 'TestData.MDB';
  // загружаем библиотеку (путь по умолчанию)
  hLib := LoadLibrary( 'ODBCCP32' );
  if( hLib <> NULL ) then
  begin
    @pFn := GetProcAddress( hLib, 'SQLConfigDataSource' );
    if( @pFn <> nil ) then
    begin
      // начинаем создание DSN
      strDriver := 'Microsoft Access Driver (*.mdb)';
      strAttr := Format( 'DSN=TestDSN' + #0 + 'DBQ=%s' + #0 +
      'Exclusive=1' + #0 + 'Description=Test Data' + #0 + #0, [strFile] );
      fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
      if( fResult = false ) then
        ShowMessage( 'Ошибка создания DSN (Datasource) !' );

      // test/create MDB file associated with DSN
      if( FindFirst( strFile, 0, srInfo ) <> 0 ) then
      begin
        strDriver := 'Microsoft Access Driver (*.mdb)';
        strAttr := Format( 'DSN=TestDSN'+#0+ 'DBQ=%s'+#0+ 'Exclusive=1'+#0+
        'Description=Test Data'+#0+ 'CREATE_DB="%s"'#0+#0, [strFile,strFile] );
        fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
        if( fResult = false ) then
          ShowMessage( 'Ошибка создания MDB (файла базы данных) !' );
      end;
      FindClose( srInfo );
    end;
    FreeLibrary( hLib );
  end
  else
    ShowMessage( 'Невозможно загрузить ODBCCP32.DLL' );
end;

Программа на языке Delphi создает ODBC DSN (Data Source Name) для доступа к файлу Access MDB. Программа использует функцию SQLConfigDataSource из ОDBC-драйвера для создания системного DSN.

Вот разбивка кода:

  1. Первая секция определяет константы для различных операций ODBC, таких как добавление, настройка или удаление DSN.
  2. Тип TSQLConfigDataSource определен как указатель на функцию, принимающий четыре параметра: hwndParent, fRequest, lpszDriver и lpszAttributes.
  3. В процедуре FormCreate модуля Form1 программа:
    • Получает путь к исполняемому файлу с помощью GetModuleFileName.
    • Устанавливает тестовый файл базы данных (TestData.MDB) в том же каталоге.
    • Загружает библиотеку ОDBC-драйвера (ODBCCP32.DLL) и получает указатель на функцию SQLConfigDataSource.
    • Если функция найдена, программа создает системный DSN с именем "TestDSN" и указывает на тестовый файл базы данных.
    • Если создание DSN fails, программой отображается сообщение об ошибке.

Программа также включает код для поиска и создания файла MDB, связанного с DSN. Этот код проверяет, существует ли файл с помощью FindFirst, и если нет, создает его, вызывая функцию SQLConfigDataSource снова с дополнительными параметрами для создания базы данных.

Некоторые примечания:

  • Библиотека ОDBC-драйвера (ODBCCP32.DLL) должна быть установленна на системе для работы программы.
  • Функция SQLConfigDataSource является частью API ODBC и требует платформы Windows.
  • Код написан на языке Delphi, который основан на языке Pascal.

Альтернативное решение - использовать другие библиотеки или фреймворки для доступа к базам данных, которые предлагают более современные и эффективные способы взаимодействия с базами данных. Например, можно использовать библиотеку dbExpress, предоставленную компанией Embarcadero (разработчиком Delphi), для подключения к файлам Access.

Создание SystemDSN при помощи Delphi: пример создания ODBC-драйвера для доступа к файлу Access MDB.


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

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




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


:: Главная :: Alias ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:29:26/0.0058269500732422/1