Files
kompas3d-mcp/docs/Kompas3D_SDK/interfaces/ksdatabaseobject.md
T
mikhail e1337e4016 feat(sdk-docs): MD-база знаний SDK — в репозиторий; генератор и зеркало убраны
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>
2026-05-26 20:00:05 +03:00

418 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 действителен только при работе с текстовыми базами данных.