Компоненты доступа к данным
Компоненты
DataSource
Сервер
БД (SQL-сервер)
Клиентское
ПО Драйвер dbExpress
Компоненты
соединения
Визуальные компоненты
Драйверы dbExpress (Borland\CBuilder6\BIN);
dbexpint.dll – InterBase
dbexpmysql.dll – MySQL
dbexpora.dll – Oracle
dbexpmss.dll – Microsoft SQL Server
Для соединения с SQl-сервером используется компонент SQLConnection.
Свойства соединения могут быть настроены с помощью Редактора соединений или программно с помощью свойств TString Params
После настройки параметров соединений его можно выбрать (свойство ConnectionName) и открыть (для этого присвоить свойству bool Connected значение true)
Открытие и закрытие соединения может быть выполнено методами:
void Open(void);
void Close(void);
Необходимость отображения окна авторизации для ввода имени пользователя и пароля при попытке подключения к серверу задаётся свойством
bool LoginPrompt;
Значение: true – выводить окно запроса;
false – использовать настройки из dbxconnections.ini;
Текущее состояние соединения можно определить при помощи свойства:
TConnectionState ConnectionState;
enum TConnectionState{
csStateClosed, //закрыто
csStateOpen, // открыто
csStateConnecting, //установление соединения
csStateExecuting, //ожидание исполнения SQL-запроса
csStateFetching, //получения данных с сервера
csStateDisconnecting //Завершение соединения
}
TSQL Connection позволяет выполнить SQL-запросы:
int Execute(const AnsiString SQL, TParams Params, void* ResultSet=Null);
int Execute(const AnsiString SQL, void* ResultSet);
SQL – текст запроса;
Params – параметры запроса (NULL – если не параметров);
ResultSet - если параметр возвращает результат – указатель на объект TCustomSQLDataSet
Для доступа к наборам данных используется компоненты TSQLTable, TSQLQury и TSQLStoredProc. Все они получают доступ к серверу БД с помощью компонента TSQLConnection и свойства
TSQLConnection SQLConnection;
В отличие от BDE являются однонаправленными наборами данных – без буферизации данных в памяти, поэтому редактирование – только с помощью оператора UPDATE.
Другое решение – использовать двунаправленные компоненты TSQLClientDataSet.
В качестве универсального компонента может использоваться TSQLDataSet. Его поведение задаётся свойством
TSQLCommandType CommandType
ctQueery –CommandText содержит SQL-запрос;
ctStoredProc – CommandText содержит имя хранимой процедуры;
ctTable – CommandText содержит имя таблицы (компонент автоматически генерирует запрос для получения всех записей для всех полей)
Для открытия набора данных TSQLDatSet используется свойство Active, метод Open(). Если SQL-запрос не возвращает набор данных, то может использоваться
int ExecSQL(bool ExecDirect = false)
ExecDirect – устанавливается при отсутствии параметров у SQL-запроса.
Пример:
SQLDataSet1->CommandType = ctQuery;
SQLDataSet1->CommandText = “SELECT Name, Weight From Animals”
SQLDataSet1->Open();