Реализация доступа к базам данных в среде JBUILDER и среде JDEVELOPER
Работа с текстовыми файлами
JBUILDER предоставляет компонент "текстовый файл" - TextDataFile, который используется для импортирования данных из текстового файла и экспортирования их обратно.
Компонент набора данных реализуется классом TableDataSet. Он используется для хранения данных, импортируемых из текстового файла. Если для текстового файла существует одноименный файл с расширением SHEMA, то структуру столбцов описывать нет необходимости. Такой файл автоматически создается компонентом TableDataSet при записи в текстовый файл и содержит описание столбцов и другую информацию по набору данных. Для каждого столбца набора данных создается объект типа Column.
В следующем примере иллюстрируется чтение данных из текстового файла и их отображение в компоненте типа JdbTable:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.dx.dataset.*;
import com.borland.dbswing.*;
public class Frame1 extends JFrame {
// contentPane - контейнер для размещения
// визуальных компонентов
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
// Компонент TextDataFile со страницы DataExpress
// для работы с текстовым файлом - источником данных
TextDataFile textDataFile1 = new TextDataFile();
// Компонент TableDataSet со страницы DataExpress,
// реализующий набор данных
TableDataSet tableDataSet1 = new TableDataSet();
Column column1 = new Column(); // Создается для
// каждого столбца в наборе данных
Column column2 = new Column();
Column column3 = new Column();
TableScrollPane tableScrollPane1 = new TableScrollPane();
// Компонент "таблица для набора данных"
JdbTable jdbTable1 = new JdbTable();
public Frame1() { // Конструктор
// Определение прослушиваемых событий
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try { jbInit(); }
catch(Exception e) { e.printStackTrace(); }
}
private void jbInit() throws Exception {
column2.setCaption("Столбец2"); //Отображаемый
// заголовок столбца
column2.setColumnName("NewColumn2"); //Имя столбца
column3.setCaption("Столбец3");
column3.setColumnName("NewColumn3");
column1.setCaption("Столбец1");
column1.setColumnName("NewColumn1");
// Тип поля указывается классами из пакета com.borland.dx
// Тип данных в столбце
column2.setDataType(com.borland.dx.dataset.Variant.STRING);
column2.setServerColumnName("NewColumn2");
column2.setSqlType(0);
// Тип данных в столбце
column3.setDataType(com.borland.dx.dataset.Variant.SHORT);
column3.setServerColumnName("NewColumn3");
column3.setSqlType(0);
// Тип данных в столбце
column1.setDataType(com.borland.dx.dataset.Variant.SHORT);
column1.setServerColumnName("NewColumn1");
column1.setSqlType(0);
// Определение связи набора данных с текстовым файлом
tableDataSet1.setDataFile(textDataFile1);
textDataFile1.setFileName("D:\\J8\\ImportText.txt");
textDataFile1.setSeparator(","); // Разделитель между
// полями
contentPane = (JPanel) this.getContentPane(); // Текущая
// панель для размещения компонентов
contentPane.setLayout(borderLayout1); // Определяем
// компоновку
this.setSize(new Dimension(500, 400));
this.setTitle("Чтение данных из текстового файла");
tableDataSet1.setColumns(new Column[] {column1,
column2,
column3});
// Устанавливаем связь визуальной таблицы с набором данных
jdbTable1.setDataSet(tableData Set1);
tableScrollPane1.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
tableScrollPane1.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
contentPane.add(tableScrollPane1, BorderLayout.CENTER);
tableScrollPane1.getViewport().add(jdbTable1, null);
}
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING)
{ System.exit(0); // Завершение приложения
}
}
}Сохранение данных из открытого набора данных в текстовом файле выполняется методом Save.
Следующий пример иллюстрирует сохранение набора данных, выполняемое в обработчике события actionPerformed.
void button1_actionPerformed(ActionEvent e) {
try {
tableDataSet1.getDataFile().save(tableDataSet1);
System.out.println ("Изменения успешно сохранены в файле"); }
catch (Exception ex)
{
System.out.print("При сохранении файла произошла ");
System.err.println(" ошибка: " + ex); }
}