Прямой доступ через OLE DB

Содержание

Используется для прямого доступа к базе данных через OLEDB-провайдер. Для доступа используются классы:

OLEDBData

Данный класс предоставляет доступ для подкючения к источнику данных через oledb-провайдер. Класс используется совместно с классом OLEDBCommand.

Методы

Соединение / Connect

Синтаксис: Соединение(СтрокаСоединения)

Возвращает: тип: Число. 1 - удачное установление соединения, 0 - не удачное.

Параметры:
  • СтрокаСоединения - тип: Строка.

Описание: позволяет сконфигурировать соединение с указанным источником данных.

Пример:

oledb.Connect("Provider=VFPOLEDB.1;Deleted=Yes;Data Source=" +
КаталогИБ() + ";Mode=ReadWrite;Mask Password=False;
Collating Sequence=MACHINE;");

СоздатьКоманду / CreateCommand

Синтаксис: СоздатьКоманду()

Возвращает: тип: экземпляр класса OLEDBCommand.

Описание: возвращает основной объект, в контексте которого осуществляется работа с данными (выполнение запросов, манипу- лирование данными).

Закрыть / Close

Синтаксис: Закрыть()

Описание: закрывает текущее подключение.

ПрисоединитьИБ / AttachIB

Синтаксис: ПрисоединитьИБ(КаталогИБ, [СтрокаСоединения])

Параметры:
  • КаталогИБ - тип: Строка. Путь к каталогу информационной базы. Должен заканчиваться "\".
  • СтрокаСоединения - тип: Строка. Строка соединения указывающая источник данных. Значение по умолчанию - "Provider=VFPOLEDB.1;Deleted=Yes;Mode=ReadWrite;Collating Sequence=MACHINE;Data Source=%1", где %1 - переданный КаталогИБ.

Описание: позволяет загрузить метаданные из указанного каталога ИБ и сконфигурировать соединение с указанным источником данных. В дальнейшем, при выполнении запросов через OLEDBCommand, парсер будет разрешать метаимена по подключенным метаданным.

OLEDBCommand

Данный класс предназначен для получения данных от провайдера и манипулирования данными. Экземпляр класса не может быть создан явно ( прим: СоздатьОбъект("OLEDBCommand") ). Создать экземпляр класса можно только при помощи метода СоздатьКоманду() класса OLEDBData. В тексте sql-выражений допускается использование метаимен, которые транслируются в:

  • реальные имена таблиц;
  • реальные имена полей таблиц;

В тексте запроса позволено использование типизирующего псевдонима.

Формат типизирующего псевдонима

Квадратные скобки являются элементом формата:

[<ИмяПоля> $<Тип1С>]
<ИмяПоля> ::= <имя, которое будет доступно для обращения>
<Тип1С> ::= <строка представляющая тип 1С>

Пример (запрос по справочнику Номенклатура с приведением результата к типу Справочник.Номенклатура):

SELECT
        SPR.ID as [Элемент $Справочник.Номенклатура]
FROM
        $Справочник.Номенклатура as SPR

Методы

Отладка / Debug

Синтаксис: Отладка(Режим)

Параметры:
  • Режим - тип: Число. 1 - включить отладку, 0 - отключить отладку.

Примечание: По умолчанию отладка отключена.

Описание: включает/отключает режим отладки sql-выражения. При включенной отладке, sql-выражения, транслированные в реальные имена, будут выводиться в окно сообщений.

Выполнить / Execute

Синтаксис: Выполнить([ТекстSQL])

Параметры:
  • ТекстSQL - тип: Строка. SQL-выражение (вида INSERT, UPDATE, DELETE). Для подготовленного запроса параметр должен быть опущен.

Возвращает: тип: Число. Количество обработанных строк.

Описание: выполняет SQL-выражение (DML, вида INSERT, UPDATE, DELETE) и возвращает количество обработанных строк. В случае возникновения ошибки, будет сгенерировано исключение с описанием ошибки.

ВыполнитьИнструкцию / ExecuteStatement

Синтаксис: ВыполнитьИнструкцию([ТекстSQL], [ТаблицаРезультатов], [флОчищать=1])

Параметры:
  • ТекстSQL - тип: Строка. SQL-выражение. Для подготовленного запроса параметр должен быть опущен.
  • ТаблицаРезультатов - тип: ТаблицаЗначений. Объект, в который будет выгружен результат запроса. Не обязателен.
  • флОчищать - тип: Число. 1 - очищать переданную таблицу результатов (ТаблицаРезультатов), 0 - не очищать. Параметр не обязателен, по умлочанию - 1.

Возвращает: тип: ТаблицаЗначений. Результат запроса в виде таблицы значений. Колонки таблицы значений будут типизированы соответствующими значениями.

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

Закрыть / Close

Синтаксис: Закрыть()

Описание: закрывает команду.

УстановитьТекстовыйПараметр / SetTextParam

Синтаксис: УстановитьТекстовыйПараметр(ИмяПараметра, ЗначениеПараметра)

Параметры:
  • ИмяПараметра - тип: Строка. Имя текстового параметра.
  • ЗначениеПараметра - тип: Неопределенный. Значение текстового параметра.

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

УстановитьКаталогВремТаблиц / SetTempTablesDir

Синтаксис: УстановитьКаталогВремТаблиц(Директория)

Параметры:
  • Директория - тип: Строка. Каталог, в котором будут создаваться временные таблицы.

Описание: метод устанавливает каталог, в котором могут создаваться временные таблицы. Путь к каталогу временных таблиц не должен содержать пробелов. Проверка на правильность пути классом не производится.

Примечание: Использование метода не обязательно. В этом случае все временные таблицы будут создаваться в каталоге ИБ.

УложитьСписокОбъектов / PutObjectList

Синтаксис: УложитьСписокОбъектов(Объект, ИмяТабл, ВидСпр)

Параметры:
  • Объект - тип: Справочник/Документ/СписокЗначений (содержащий элементы типа Справочник, Документ). Объект, который необходимо уложить во временную таблицу.
  • ИмяТабл - тип: Строка. Возвращаемое значение. Имя временной таблицы, которое будет сгенерировано методом и возвращено через этот параметр.
  • ВидСпр - тип: Строка. Вид справочника для иерархического включения элементов.

Описание: сохраняет Объект (или список объектов, если передан список значений) во временную таблицу. Имя временной таблицы генерируется методом и возвращается через второй параметр (именем является GUID). Временная таблица имеет поле VAL CHAR(9) и служебное поле ISFOLDER NUMERIC(1,0).

Если указан параметр ВидСпр (вид многоуровневого справочника), то таблица будет содержать элементы (без групп), иерархически принадлежащие группам (Подобно оператору "в" встроенного языка запросов 1С).

Уничтожать временные таблицы явным образом не обязательно ( прим: DROP TABLE MyTmpTbl ) - все временные таблицы будут уничтожены в момент закрытия команды ( Закрыть() ) или при уничтожении объекта OLEDBCommand.

Пример:

ВрТабл = "";
cmd.УложитьСписокОбъектов(ТекГруппа, ВрТабл, "Номенклатура");
Сообщить("Что тут: " + ВрТабл); // Например, "Что тут: 858573b1-5a6f-459e-9c75-ec63e2a1d858"

УстановитьТаймаутВыполнения / SetExecTimeOut

Синтаксис: УстановитьТаймаутВыполнения(Таймаут)

Параметры:
  • Таймаут - тип: Число. Количество секунд таймаута запроса.

Описание: метод устанавливает количество секунд таймаута запроса. После истечения этого времени запрос прекращается с ошибкой. Значение параметра равное 0 - бесконечное выполнение запроса.

ДобПараметр / AddParam

Синтаксис: ДобПараметр(IOType, DBType, Len, Prec)

Параметры:
  • IOType - тип: Число. Направления параметра:

    • 1 - DBPARAMIO_INPUT;
    • 2 - DBPARAMIO_OUTPUT;
    • 3 - DBPARAMIO_INPUT | DBPARAMIO_OUTPUT.
  • DBType - тип: Число. DBTYPE-тип параметра.

  • Len - тип: Число. Длина параметра.

  • Prec - тип: Число. Точность параметра.

Описание: добавляет описание параметра для параметризированного запроса.

УстановитьПараметр / SetParam

Синтаксис: УстановитьПараметр(НомерПараметра, Значение)

Параметры:
  • НомерПараметра - тип: Число. Номер параметра, отсчет идет от 1.
  • Значение - тип: Любой. Значение параметра.

Описание: устанавливает значение параметра параметризированного запроса.

КолвоПараметров / ParamCnt

Синтаксис: КолвоПараметров()

Возвращает: тип: Число. Количество добавленных параметров.

Описание: Возвращает количество добавленных параметров.

УдалитьПараметр / DeleteParam

Синтаксис: УдалитьПараметр(НомерПараметра)

Параметры:
  • НомерПараметра - тип: Число. Номер параметра, отсчет идет от 1.

Описание: удалаяет параметр.

УдалитьПараметры / DeleteParams

Синтаксис: УдалитьПараметры()

Описание: удалаяет параметры.

Подготовить / Prepare

Синтаксис: Подготовить(ТекстSQL)

Параметры:
  • ТекстSQL - тип: Строка. SQL-выражение.

Описание: позволяет подготовить SQL запрос. Примняется для параметризированных запросов. Параметризированный запрос может иметь параметры (скалярные значения некоторых констант в запросе заменяют символами подстановки "?" (SQL параметры)). В последствии предварительно изменяя значения параметров подготовленный запрос можно выполнить несколько раз. Так обеспечивается наиболее оптимальное выполнение нескольких запрсов отличающихся скалярными характеристиками.

ОтменитьПодготовку / Unprepare

Синтаксис: ОтменитьПодготовку()

Описание: сбросить подготовленный запрос.

Приложение #1 OLEDB: Преобразование типов OLE DB к типам 1С

Код Тип OLEDB Тип 1С Примечание
131 DBTYPE_NUMERIC Число  
2 DBTYPE_I2  
3 DBTYPE_I4  
4 DBTYPE_R4  
5 DBTYPE_R8  
6 DBTYPE_CY  
14 DBTYPE_DECIMAL  
17 DBTYPE_UI1  
16 DBTYPE_I1  
18 DBTYPE_UI2  
19 DBTYPE_UI4  
20 DBTYPE_I8  
21 DBTYPE_UI8  
11 DBTYPE_BOOL  
133 DBTYPE_DBDATE Дата  
135 DBTYPE_DBTIMESTAMP С обрез. времени
130 DBTYPE_WSTR Строка  
1 DBTYPE_NULL  
7 DBTYPE_DATE  
8 DBTYPE_BSTR не поддерж.
10 DBTYPE_ERROR не поддерж.
12 DBTYPE_VARIANT не поддерж.
13 DBTYPE_IUNKNOWN не поддерж.
72 DBTYPE_GUID  
128 DBTYPE_BYTES не поддерж.
129 DBTYPE_STR  
132 DBTYPE_UDT не поддерж.
134 DBTYPE_DBTIME  

Приложение #2 OLEDB: Преобразование типов 1С к типам OLE DB

Тип OLEDB Тип 1С Примечание SQLOLEDB VFPOLEDB
DBTYPE_I2 Число   smallint  
DBTYPE_I4   int integer
DBTYPE_R4   float  
DBTYPE_R8   real double
DBTYPE_CY   money currency
DBTYPE_BOOL 0-ложь, 1-истина bit logical
DBTYPE_DECIMAL   decimal numeric, float
DBTYPE_UI1   tinyint  
DBTYPE_I1   numeric(3,0)  
DBTYPE_UI2   numeric(5,0)  
DBTYPE_UI4   numeric(10,0)  
DBTYPE_I8   bigint  
DBTYPE_UI8   numeric(20,0)  
DBTYPE_NUMERIC   numeric  
DBTYPE_GUID Строка   uniqueidentifier  
DBTYPE_STR Строка   char, varchar, text character
Число  
Дата  
Перечисление  
Справочник  
Документ  
Календарь  
ВидРасчета  
Счет  
ВидСубконто  
ПланСчетов  
DBTYPE_DATE Дата   datetime date
DBTYPE_DBDATE     date
DBTYPE_DBTIMESTAMP Дата   datetime datetime
Строка  
DBTYPE_DBTIME Число      
Строка