Московский государственный университет имени М.В.Ломоносова
Опубликован: 20.12.2005 | Доступ: свободный | Студентов: 3142 / 371 | Оценка: 4.22 / 3.86 | Длительность: 12:03:00
ISBN: 978-5-9556-0068-0
Лекция 13:

Реализация доступа к базам данных в среде 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);           }
}