Класс LinterSqlException

Класс предназначен для обработки кодов завершения, возвращаемых ADO.NET-провайдеру СУБД ЛИНТЕР.

Этот класс создается всякий раз при обнаружении ADO.NET-провайдером СУБД ЛИНТЕР кода завершения, полученного от ЛИНТЕР-сервера. (Ошибки на стороне клиентского приложения возникают как стандартные исключения среды CLR).

Полный список сообщений LinterSqlException и рекомендации по устранению ошибок см. в документе «СУБД ЛИНТЕР. Справочник кодов завершения».

Пример

// C#
using System;
using System.Data.LinterClient;

class Program
{
  public static void ShowLinterException(string connectionString)
  {
    string queryString = "EXECUTE NonExistantStoredProcedure";

    using (LinterDbConnection connection = new LinterDbConnection(connectionString))
    {
      LinterDbCommand command = new LinterDbCommand(queryString, connection);
      try
      {
        command.Connection.Open();
        command.ExecuteNonQuery();
      }
      catch (LinterSqlException ex)
      {
        Console.WriteLine("Код СУБД ЛИНТЕР: " + ex.Number);
        Console.WriteLine("Код операционной системы: " + ex.LinterSysErrorCode);
     Console.WriteLine("Номер строки SQL: " + ex.SqlLineNumber);
        Console.WriteLine("Позиция в строке SQL: " + ex.SqlPositionInLine);
     Console.WriteLine("Текст сообщения: " + ex.Message);
        Console.WriteLine("Имя поставщика: " + ex.Source);
        Console.WriteLine("Метод: " + ex.TargetSite);
        Console.WriteLine("Стек вызовов: ");
        Console.WriteLine(ex.StackTrace);
      }
    }
  }
  static void Main(string[] args)
  {
    ShowLinterException("Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8");
  }
}

Результат выполнения примера:

Код СУБД ЛИНТЕР: 2229
Код операционной системы: 2228225
Номер строки SQL: 1
Позиция в строке SQL: 34
Текст сообщения: [Linter error] unknown procedure
Имя поставщика: .Net LinterClient Data Provider
Метод: IntPtr prepare(System.Data.LinterClient.TCBL ByRef, System.String)
Стек вызовов:
   at System.Data.LinterClient.LinterBaseFunctions.prepare(TCBL& cbl, String strQuery)
   at System.Data.LinterClient.CommandInfo.prepare(TCBL cbl, LinterDbParameter[]& lpars)
   at System.Data.LinterClient.MultipleCommands.prepare()
   at System.Data.LinterClient.LinterDbCommand.Prepare()
   at System.Data.LinterClient.LinterDbCommand.ExecuteNonQuery()
   at Program.ShowLinterException(String connectionString)

Свойства класса LinterSqlException приведены в таблице 42.

Таблица 42. Свойства класса LinterSqlException
Свойство Описание
Data Предоставляет массив пар «ключ/значение» с дополнительной информацией об исключении.
ErrorCode Предоставляет HRESULT кода завершения (32-битное значение (ULONG) используемое для описания кодов завершения).
Errors

Предоставляет один или несколько объектов класса LinterSqlError, которые содержат детальные сведения об исключениях, создаваемых ADO.NET-провайдером.

Примечание

В текущей версии ADO.NET провайдера экземпляры класса LinterSqlError не создаются.

HelpLink Предоставляет/устанавливает ссылку на файл справки, связанный с заданным исключением.
InnerException Предоставляет экземпляр класса Exception, вызвавший текущее исключение.
Message Предоставляет текст сообщения, которое описывает текущее исключение.
Number Предоставляет числовое значение кода завершения СУБД ЛИНТЕР.
Source Предоставляет имя поставщика данных, сгенерировавшего код завершения.
SqlLineNumber Предоставляет номер строки в SQL запросе для ошибок транслятора SQL.
SqlPositionInLine Предоставляет позицию в строке SQL запроса для ошибок транслятора SQL
StackTrace Предоставляет строковое представление фрагмента стека вызова в момент возникновения текущего исключения.
TargetSite Предоставляет имя метода, в котором возникло текущее исключение.

Методы класса LinterSqlException приведены в таблице 43.

Таблица 43. Методы класса LinterSqlException
МетодОписание
GetBaseExceptionПредоставляет корневое исключение.
GetObjectDataУправляет сериализацией исключения.

Синтаксис

[Serializable]
public class LinterSqlException : DbException