Приложения для работы с локальными базами данных 519

Рис. 9.41

Приложение, позволяющее пользователю выбрать
любую доступную базу данных и любую таблицу в
ней

yession->C-;et.TableNames icbAlias->'i'ext, " ", true, false, сЬТаЫе->1 terns) ;

cbTable->Item!ndex = 0;

Первый из этих операторов использует метод GetTableNames для загрузки в
свой последний параметр типа TStrings (в данном примере это список cbTab-
le->Items) перечня таблиц базы данных, заданной своим первым параметром (в
данном примере это cbAlias->Text). Второй параметр метода позволяет задать
шаблон, отбирающий имена таблиц. Например, шаблон «р*» отберет имена таб-
лиц, начинающиеся с символа «р». Пустой шаблон, использованный в примере,
означает выбор всех таблиц. Третий параметр, установленный в true, означает, что
в имена таблиц будет включаться расширение файла (это необходимо для таблиц
Paradox и dBase). Четвертый параметр задается равным false для баз данных Para-
dox и dBase, а для баз данных, основанных на SQL, этот параметр устанавливается
в true, чтобы возвращать и таблицы данных и системные таблицы, определяющие
структуру данных.

Теперь остается ввести в приложение обработчик нажатия кнопки Просмотр.
Этот обработчик может иметь вид:

if (cbTable->Text == "")
{
ShowMessage("Не задана таблица");

return;

}
Tablel->Active = false;

Tablel->DatabaseName = cbAlias->Text;

Tablel->TableName = cbTable->Text;

Tablel->Active = true;

Этот обработчик выводит компонент Tablel из активного состояния, чтобы
можно было связаться с новой базой данных, затем задает его свойства Database-
Name и TableName равными выбранным пользователем значениям и переводит
Tablel в активное состояние.

Откомпилируйте приложение и посмотрите его в работе. Вы можете посмот-
реть с его помощью не только свои, но и другие базы данных, прилагаемые к
C++Builder.

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

При явном вводе компонента Session в приложение следует установить его
свойство SessionName — имя сеанса сетевого соединения, задав в нем произволь-
ный идентификатор, например, si. После этого в выпадающих списках свойств