IDalCommandParam.DataDomain

Синтаксис Fore

DataDomain: DbDataDomain;

Синтаксис Fore.NET

DataDomain: Prognoz.Platform.Interop.DbDataDomain;

Описание

Свойство DataDomain определяет тип данных параметра, если он предназначен для передачи многобайтовой информации.

Комментарии

В текущей реализации данное свойство актуально, если параметр используется для изменения значения текстового поля.

При установке в свойстве Value символьного значения во время выполнения SQL-команды будет осуществлена проверка его длины для возможности вставки в качестве значения символьного поля. Ограничением для данных полей является 3999 символов. Если в таблице, для которой выполняется запрос, создано текстовое поле, то для вставки значения превышающего 3999 символов необходимо отключить проверку длины значения, указав в свойстве DataDomain значение DbDataDomain.Memo. Текстовые поля могут хранить до четырех гигабайт символьных данных.

Пример Fore

Для выполнения примера предполагается наличие на сервере БД таблицы с физическим именем «TFILESTORE». Данная таблица имеет два поля: символьное - NAME, и текстовое - TEXT_FILE. В корневом каталоге диска С имеется файл «1.txt».

Sub UserSub;
Var
    MB: IMetabase;
    DB: IDatabaseInstance;
    Com: IDalCommand;
    Params: IDalCommandParams;
    Param, Param1: IDalCommandParam;
    FileStr: IFileStream;
    TextRead: ITextReader;
    TextFile: String;
Begin
    MB := MetabaseClass.Active;
    DB := MB.ItemById("BD").Open(NullAs IDatabaseInstance;
    Com := DB.Connection.CreateCommand("insert into TFILESTORE (NAME, TEXT_FILE) values(:A, :B)");
    Com.Parse;
    Params := Com.Params;
    Param := Params.Item(0);
    Param1 := Params.Item(1);
    //Считываем содержимое файла в текстовом виде
    FileStr := File.Open("c:\1.txt", FileOpenMode.Read, FileShare.DenyNone);
    TextRead := New TextReader.Create(FileStr);
    TextFile := TextRead.ReadToEnd;
    //Устанавливаем значения параметров
    Param.Value := FileStr.FileName;
    //Запись текста файла без проверки длины передаваемых данных
    Param1.DataDomain := DbDataDomain.Memo;
    Param1.Value := TextFile;
    //Выполнение команды
    Com.Execute;
    Com.Close;
    Dispose TextRead;
End Sub UserSub;

При выполнении примера будет выполнена SQL-команда, осуществляющая вставку в таблицу новой записи. В качестве значения полей передаются наименование файла и его содержимое в символьном виде. Содержимое файла вставляется в текстовое поле. Т.к. длина содержимого может иметь большое значение, то для отключения проверки длины указывается значение свойства DataDomain.

Пример Fore.NET

Для выполнения примера предполагается наличие на сервере БД таблицы с физическим именем «TFILESTORE». Данная таблица имеет два поля: символьное - NAME, и текстовое - TEXT_FILE. В корневом каталоге диска С имеется файл «1.txt».

Sub UserProc();
Var
    MB: IMetabase;
    DB: IDatabaseInstance;
    Com: IDalCommand;
    Params: IDalCommandParams;
    Param, Param1: IDalCommandParam;
    FileClass: FileClass = New FileClass();
    FileStr: IFileStream;
    TextRead: TextReaderClass = New TextReaderClass();
    TextFile: String;
Begin
    MB := Self.Metabase;
    DB := MB.ItemById["BD"].Open(NullAs IDatabaseInstance;
    Com := DB.Connection.CreateCommand("insert into TFILESTORE (NAME, TEXT_FILE) values(:A, :B)");
    Com.Parse();
    Params := Com.Params;
    Param := Params.Item[0];
    Param1 := Params.Item[1];
    //Считываем содержимое файла в текстовом виде
    FileStr := FileClass.Open("c:\1.txt", FileOpenMode.frRead, FileShare.frDenyNone);
    TextRead.Create(FileStr);
    TextFile := TextRead.ReadToEnd();
    //Устанавливаем значения параметров
    Param.Value := FileStr.FileName;
    //Запись текста файла без проверки длины передаваемых данных
    Param1.DataDomain := DbDataDomain.dddMemo;
    Param1.Value := TextFile;
    //Выполнение команды
    Com.Execute();
    Com.Close();
End Sub;

При выполнении примера будет выполнена SQL-команда, осуществляющая вставку в таблицу новой записи. В качестве значения полей передаются наименование файла и его содержимое в символьном виде. Содержимое файла вставляется в текстовое поле. Т.к. длина содержимого может иметь большое значение, то для отключения проверки длины указывается значение свойства DataDomain.

См. также:

IDalCommandParam