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

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Этот пример показывает один из способов создания 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;

{/codecitation}

Добавить комментарий