e1337e4016
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается. - .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным (safety-net на случай повторной локальной выгрузки). - CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
418 lines
22 KiB
Markdown
418 lines
22 KiB
Markdown
---
|
||
title: "База данных (Интерфейс ksDataBaseObject)"
|
||
type: interface
|
||
api: [api7]
|
||
tags: [interface, api7, ksdatabaseobject]
|
||
sources:
|
||
- ksdatabaseobject.html
|
||
---
|
||
|
||
*API интерфейсов. Версия 5*
|
||
|
||
|
||
## База данных (Интерфейс ksDataBaseObject)
|
||
|
||
Интерфейс базы данных.
|
||
Примечание:
|
||
Указатель на интерфейс можно получить при помощи метода KompasObject::DataBaseObject.
|
||
Смотрите также KompasObject
|
||
|
||
|
||
## ksCloseTextFile - Закрыть текстовый файл запросов
|
||
|
||
Аналог данного метода при использовании API экспортных функций - CloseTextFile.
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL ksCloseTextFile (long F);
|
||
Входной параметр:
|
||
F - указатель на текстовый файл.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
|
||
|
||
## ksCondition - Задать или изменить условие запроса
|
||
|
||
Аналог данного метода при использовании API экспортных функций - Condition.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksCondition (long db,
|
||
long r,
|
||
BSTR stSQL);
|
||
Входные параметры:
|
||
db - указатель на объект БД,
|
||
r - указатель на отношение,
|
||
stSQL - запрос.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
При работе с базой данных через ODBC-интерфейс происходит переопределение составляющей SQL-запроса, начинающейся с ключевого слова WHERE. Состав обрабатываемых полей записи, определенный в отношении, не изменяется.
|
||
При работе с текстовыми файлами использование функции ksDataBaseObject::ksCondition является единственной возможностью определения условия запроса, так как в функции ksDataBaseObject::ksDoStatement определяется только список обрабатываемых полей записи.
|
||
Следует отметить, что при работе с текстовыми базами данных не обрабатывается вложенность условий (например, "where d > 10 and d < 14").
|
||
|
||
|
||
## ksConnectDB - Связать объект БД с конкретной базой данных
|
||
|
||
Аналог данного метода при использовании API экспортных функций - ConnectDB.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksConnectDB (long db,
|
||
BSTR DBName);
|
||
Входные параметры:
|
||
db - указатель на объект БД,
|
||
DBName - имя БД (для ODBC - имя БД в администраторе ODBC, для текстового файла - имя файла).
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
|
||
|
||
## ksCreateDB - Создать блок заголовка базы данных
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
long ksCreateDB (BSTR typeBD);
|
||
Входной параметр:
|
||
typeBD - тип базы данных: TXT_DB - база данных текстового формата, ODBC_DB - база данных, доступная через интерфейс ODBC.
|
||
Возвращаемое значение:
|
||
указатель на блок заголовка базы данных - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Функция позволяет открыть БД. Одновременно может быть открыто несколько БД.
|
||
|
||
|
||
## ksDeleteDB - Удалить блок заголовка базы данных
|
||
|
||
Аналог данного метода при использовании API экспортных функций - DeleteDB.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksDeleteDB(long db);
|
||
Входной параметр:
|
||
db - указатель на объект БД.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Происходит автоматическое отсоединение базы данных и удаление всех созданных ранее запросов.
|
||
|
||
|
||
## ksDisconnectDB - Отключиться от базы данных
|
||
|
||
Аналог данного метода при использовании API экспортных функций - DisconnectDB.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksDisconnectDB (long db);
|
||
Входной параметр:
|
||
db - указатель на объект БД.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Функция отсоединяет блок заголовка с указателем bd от базы данных.
|
||
Следует отметить, что при удалении блока заголовка (функция ksDataBaseObject::ksDeleteDB) отсоединение выполняется автоматически, поэтому использовать ее рекомендуется только при переопределении базы данных.
|
||
|
||
|
||
## ksDoStatement - Установить запрос для объекта БД
|
||
|
||
Аналог данного метода при использовании API экспортных функций - DoStatement.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksDoStatement (long db, long r,
|
||
BSTR stSQL);
|
||
Входные параметры:
|
||
db - указатель на объект БД,
|
||
r - действительный указатель на отношение,
|
||
stSQL - запрос.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Параметр stSQL при работе через ODBC-интерфейс содержит строку SQL-запроса, а при работе с текстовыми файлами - номера полей (колонок) или пустую строку (если обрабатываются все поля таблицы).
|
||
Для текстовых баз данных созданный запрос будет обрабатывать все записи, а непосредственно условие выборки определяется функцией ksDataBaseObject::ksCondition.
|
||
Для ODBC-баз отношение не обязательно в случае вставки, удаления и обновления записи. Для текстового файла отношение в этих случаях необходимо, чтобы определить имена колонок.
|
||
Примеры:
|
||
```vb
|
||
Select d, s, p from bolt where d = 10 - пример запроса выборки из БД,
|
||
где d, s, p - названия колонок или * для всех колонок или номера колонок "2, 4, 7" для текстового файла, начиная с единицы слева направо,
|
||
bolt - имя таблицы в БД или пустая строка для всех колонок текстового файла,
|
||
d - имя колонки в отношении.
|
||
Insert into bolt (d,p,s) values( 10, 1.5, 14 ) - пример запроса для вставки строки в таблицу,
|
||
где bolt - имя таблицы в БД или пустая строка для всех колонок текстового файла.
|
||
Delete from bolt where d = 10 - пример запроса для удаления строки из таблицы bolt.
|
||
Update bolt set p = 2.5, s = 20 where d =10 - пример запроса для замены данных в строке таблицы bolt.
|
||
```
|
||
|
||
|
||
## ksEndRelation - Завершить описание отношения
|
||
|
||
Аналог данного метода при использовании API экспортных функций - EndRelation.
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL ksEndRelation();
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Описание отношения начинается методом ksDataBaseObject::ksRelation.
|
||
|
||
|
||
## ksFreeStatement - Освободить отношения
|
||
|
||
Аналог данного метода при использовании API экспортных функций - FreeStatement.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksFreeStatement (long db, long r, long fOption);
|
||
Входные параметры:
|
||
db - указатель на объект БД,
|
||
r - указатель на отношение,
|
||
fOption - тип освобождения.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Происходит освобождение памяти, отведенной для буфера записи функцией ksDataBaseObject::ksRelation.
|
||
Параметр fOption имеет значение при работе через ODBC-интерфейс и означает тип освобождения (описан в помощи модуля ODBC).
|
||
|
||
|
||
## ksGetColumnName - Считать имя колонки таблицы из базы данных
|
||
|
||
Аналог данного метода при использовании API экспортных функций - GetColumnName.
|
||
Синтаксис Automation:
|
||
```
|
||
BSTR ksGetColumnName (long db,
|
||
BSTR tableName,
|
||
long* res,
|
||
BSTR firstOrNext);
|
||
Входные параметры:
|
||
db - указатель на объект БД,
|
||
tableName - ODBC - имя таблицы, текстовая БД - имя файла,
|
||
firstOrNext - признак колонки: F - первая колонка, N - следующая колонка.
|
||
Выходной параметр:
|
||
res - результат работы: 1 - если в указанной таблице или базе еще существуют несчитанные имена колонок, 0 - если все имена колонок считаны.
|
||
Возвращаемое значение:
|
||
имя колонки.
|
||
```
|
||
Примечание:
|
||
Для текстовых БД возвращаются номера колонок.
|
||
|
||
|
||
## ksGetTableName - Считать имя таблицы
|
||
|
||
Аналог данного метода при использовании API экспортных функций - GetTableName.
|
||
Синтаксис Automation:
|
||
```
|
||
BSTR ksGetTableName (long db,
|
||
long* res,
|
||
BSTR firstOrNext);
|
||
Входные параметры:
|
||
db - указатель на объект БД,
|
||
firstOrNext - признак таблицы: F - первая таблица, N - следующая таблица.
|
||
Выходной параметр:
|
||
res - результат работы: 1- если в указанной базе еще существуют несчитанные имена таблиц, 0 - если все имена таблиц считаны.
|
||
Возвращаемое значение:
|
||
имя таблицы.
|
||
```
|
||
|
||
|
||
## ksIsODBCOkey - Проверить подключение ODBC
|
||
|
||
Аналог данного метода при использовании API экспортных функций - IsODBCOkey.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksIsODBCOkey();
|
||
Возвращаемое значение:
|
||
1 - если соединение с ODBC установлено,
|
||
0 - если соединения нет.
|
||
```
|
||
|
||
|
||
## ksOpenTextFile - Открыть текстовый файл запросов
|
||
|
||
Аналог данного метода при использовании API экспортных функций - OpenTextFile.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksOpenTextFile (BSTR fileName);
|
||
Входной параметр:
|
||
fileName - имя файла.
|
||
Возвращаемое значение:
|
||
указатель на открытый файл - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Открыть текстовый файл запросов, настроенный на базу данных.
|
||
Функция работает по правилам стандартной процедуры WINDOWS OpenFile.
|
||
Реализованные в рамках данного раздела функции работы с текстовыми файлами обеспечивают их построчную обработку и позволяют вынести обращения к базе данных во внешний текстовый файл. Это дает возможность работать с разными платформами СУБД без изменения выполняемого кода приложения.
|
||
|
||
|
||
## ksRChar - Определить в отношении строковое поле
|
||
|
||
Аналог данного метода при использовании API экспортных функций - RChar.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksRChar (BSTR name,
|
||
long size,
|
||
long type);
|
||
Входные параметры:
|
||
name - имя колонки таблицы,
|
||
size - размер буфера,
|
||
type - тип данных, хранящихся в БД (действительно для ODBC-баз).
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Параметр name действителен при работе с текстовой базой данных.
|
||
Параметр type имеет смысл только для баз данных, связанных через ODBC, и описывает действительный тип колонки базы данных, с которой будет связано поле при выполнении операции ksDataBaseObject::ksDoStatement. Это позволяет получать строковое представление записи произвольного типа. Описания типов для ODBC хранятся в файле SQL.h, который поставляется вместе с модулями ODBC.
|
||
|
||
|
||
## ksRCharW - Определить в отношении строковое поле
|
||
|
||
Аналог данного метода при использовании API экспортных функций - RCharW.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksRCharW (BSTR name,
|
||
long size,
|
||
long type);
|
||
Входные параметры:
|
||
name - имя колонки таблицы,
|
||
size - размер буфера,
|
||
type - тип данных, хранящихся в БД (действительно для ODBC-баз).
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Параметр name действителен при работе с текстовой базой данных.
|
||
Параметр type имеет смысл только для баз данных, связанных через ODBC, и описывает действительный тип колонки базы данных, с которой будет связано поле при выполнении операции ksDataBaseObject::ksDoStatement. Это позволяет получать строковое представление записи произвольного типа. Описания типов для ODBC хранятся в файле SQL.h, который поставляется вместе с модулями ODBC.
|
||
|
||
|
||
## ksRDouble - Определить в отношении поле типа double
|
||
|
||
Аналог данного метода при использовании API экспортных функций - RDouble.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksRDouble (BSTR name);
|
||
Входной параметр:
|
||
name - имя поля.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Параметр name действителен только при работе с текстовыми базами данных.
|
||
|
||
|
||
## ksReadRecord - Получить запись базы данных
|
||
|
||
Аналог данного метода при использовании API экспортных функций - ReadRecord.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksReadRecord (long db,
|
||
long r,
|
||
LPDISPATCH userPars);
|
||
Входные параметры:
|
||
db - указатель на объект БД,
|
||
r - указатель на отношение,
|
||
userPars - указатель на интерфейс ksUserParam.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Количество и типы полей в структуре userPars должны соответствовать отношению r.
|
||
|
||
|
||
## ksReadStrFrFile - Считать строку из текстового файла запросов
|
||
|
||
Аналог данного метода при использовании API экспортных функций - ReadStrFromTextFile.
|
||
Синтаксис Automation:
|
||
```
|
||
BSTR ksReadStrFrFile (long f,
|
||
long* res,
|
||
long numb);
|
||
Входные параметры:
|
||
f - указатель на текстовый файл,
|
||
numb - номер строки.
|
||
Выходной параметр:
|
||
res - результат работы метода: 1 - в случае успешного завершения, 0 - в случае неудачи.
|
||
Возвращаемое значение:
|
||
- строка обращения к базе данных.
|
||
```
|
||
Примечание:
|
||
Строка обращения к базе данных начинается с номера, далее после двоеточия идет текст обращения, например:
|
||
3:select d,f from Table1 where d=10 and f>d
|
||
|
||
|
||
## ksRelation - Создать новое отношение
|
||
|
||
Аналог данного метода при использовании API экспортных функций - Relation.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksRelation (long db);
|
||
Входной параметр:
|
||
db - указатель на объект БД.
|
||
Возвращаемое значение:
|
||
указатель на отношение - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Отношение характеризует один запрос и представляет собой Описание памяти, необходимой для размещения очередной записи выборки, выполняемого функцией ksDataBaseObject::ksReadRecord. Является составным объектом, каждое поле которого описывает тип и имя поля (колонки) в таблице базы данных. Имя действительно только в случае работы с текстовым файлом, так как при обмене через ODBC-интерфейс имена уже описаны в блоке заголовка.
|
||
Количество отношений, определенных для базы данных, не ограничивается.
|
||
|
||
|
||
## ksRFloat - Определить в отношении поле типа float
|
||
|
||
Аналог данного метода при использовании API экспортных функций - RFloat.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksRFloat (BSTR name);
|
||
Входной параметр:
|
||
name - имя поля.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Параметр name действителен только при работе с текстовыми базами данных.
|
||
|
||
|
||
## ksRInt- Определить в отношении поле типа Int
|
||
|
||
Аналог данного метода при использовании API экспортных функций - RInt.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksRInt (BSTR name);
|
||
Входной параметр:
|
||
name - имя поля.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Параметр name действителен только при работе с текстовыми базами данных.
|
||
|
||
|
||
## ksRLong - Определить в отношении поле типа long
|
||
|
||
Аналог данного метода при использовании API экспортных функций - RLong.
|
||
Синтаксис Automation:
|
||
```
|
||
long ksRLong (BSTR name);
|
||
Входной параметр:
|
||
name - имя поля.
|
||
Возвращаемое значение:
|
||
1 - в случае успешного завершения,
|
||
0 - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Параметр name действителен только при работе с текстовыми базами данных.
|