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

Как сделать ADO-connection

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

Как сделать ADO-connection

Автор: http://www.swissdelphicenter.ch

uses
  ComObj;

function OpenConnection(ConnectionString: AnsiString): Integer;
var
  ADODBConnection: OleVariant;
begin
  ADODBConnection := CreateOleObject('ADODB.Connection');
  ADODBConnection.CursorLocation := 3; // User client
  ADODBConnection.ConnectionString := ConnectionString;
  Result := 0;
  try
    ADODBConnection.Open;
  except
    Result := -1;
  end;
end;

function DataBaseConnection_Test(bMessage: Boolean): AnsiString;
var
  asTimeout, asUserName, asPassword, asDataSource, ConnectionString: AnsiString;
  iReturn: Integer;
  OldCursor: TCursor;
begin
  OldCursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  asTimeout := '150';
  asUserName := 'NT_Server';
  asPassword := 'SA';
  asDataSource := 'SQL Server - My DataBase';

  ConnectionString := 'Data Source = ' + asDataSource +
    'User ID = ' + asUserName +
    'Password = ' + asPassword +
    'Mode = Read|Write;Connect Timeout = ' + asTimeout;
  try
    iReturn := OpenConnection(ConnectionString);

    if (bMessage) then
    begin
      if (iReturn = 0) then
        Application.MessageBox('Connection OK!', 'Information', MB_OK)
      else if (iReturn = -1) then
        Application.MessageBox('Connection Error!', 'Error', MB_ICONERROR +
          MB_OK);
    end;

    if (iReturn = 0) then
      Result := ConnectionString
    else if (iReturn = -1) then
      Result := '';
  finally
    Screen.Cursor := OldCursor;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DataBaseConnection_Test(True);
end;

Here's a translation of the text into Russian:

Функция подключения ADO

Функция OpenConnection создает экземпляр объекта ADODB-connection, настраивает его свойства (локация курсора и строка подключения) и пытается открыть соединение. Если это удалось, она возвращает 0; если нет, то -1.

  • Использование вызова CreateOleObject для создания COM-объекта можно улучшить с помощью функции CoCreateInstance.
  • Обработка ошибок может быть улучшена за счет ловли конкретных исключений вместо просто повторения исключения с помощью Result := -1.
  • Рассмотрите добавление дополнительной логики или сообщений об ошибках для предоставления более информации о том, что пошло не так.

Тестирование подключения к базе данных

Функция DataBaseConnection_Test является оберткой вокруг функции OpenConnection, которая проверяет успешность соединения. Если это удалось, она возвращает строку подключения; если нет, то пустую строку.

  • Функция использует много магических строк (например, 'Data Source = ' + asDataSource), которые можно улучшить с помощью констант или отдельного файла настройки.
  • Рассмотрите добавление более robust обработки ошибок для случаев, когда строка подключения недействительна или не может быть открыта.
  • Использование вызовов Application.MessageBox для отображения сообщений можно улучшить с помощью более современной и платформо-независимой методики (например, использования третьей-сторонней библиотеки).

Другие предложения

  • Рассмотрите использование более современного API для баз данных (например, DBX), который легче использовать и более эффективен, чем ADO.
  • Код использует тип AnsiString, который можно улучшить с помощью типа UnicodeString.
  • Код может получить пользу от дополнительных комментариев и документации для объяснения, что каждая функция делает и как она работает.

Обновленная версия кода

Вот обновленная версия кода, которая включает некоторые из этих предложений:

uses
  ComObj,
  DBX;

function OpenConnection(ConnectionString: UnicodeString): Integer;
var
  ADODBConnection: OleVariant;
begin
  ADODBConnection := CoCreateInstance('ADODB.Connection');
  ADODBConnection.CursorLocation := 3; // User client
  ADODBConnection.ConnectionString := ConnectionString;
  Result := 0;
  try
    ADODBConnection.Open;
  except
    on E: Exception do
      begin
        Result := -1;
        Writeln(Format('Error opening connection: %s', [E.Message]));
      end;
  end;
end;

function DataBaseConnection_Test(bMessage: Boolean): UnicodeString;
var
  asTimeout, asUserName, asPassword, asDataSource, ConnectionString: UnicodeString;
  iReturn: Integer;
begin
  ConnectionString := Format('Data Source=%s;User ID=%s;Password=%s;',
     [asDataSource, asUserName, asPassword]);
  try
    iReturn := OpenConnection(ConnectionString);
    if bMessage then
      begin
        if iReturn = 0 then
          Application.MessageBox('Connection OK!', 'Information', MB_OK)
        else if iReturn = -1 then
          Application.MessageBox('Connection Error!', 'Error', MB_ICONERROR + MB_OK);
      end;
    if iReturn = 0 then
      Result := ConnectionString
    else if iReturn = -1 then
      Result := '';
  finally
     // Удалите курсор на экране
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DataBaseConnection_Test(True);
end;

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

В статье описывается пример кода на Delphi, который демонстрирует создание ADO-connection к базе данных SQL Server с использованием компонента ADODB.


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

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




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


:: Главная :: ADO ::


реклама


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

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