Четверг, 17.07.2025, 01:22
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
.:: Меню ::.
.:: Категории каталога ::.
Разное [5]
Различные темы по программированию
Пакет SWT [4]
Практикуемся в написании оконных приложений на Java
Среды разработки, компиляторы и т.п [3]
Сравнения, описания, плюсы и минусы сред разработки. Сравнение компиляторов.
Java [8]
Объектно-ориентированные соображения.
Си++ [19]
Коротко и ясно
Ассемблер [6]
Машинные коды, побитно :)
Форма входа
.:: Поиск ::.
.:: Дополнительно ::.
    Хостинг от Loqo.ru
             .:: Коментируем ::.
Главная » Статьи » Текстовый материал » Java

JDBC и Swing, продолжаем мучить MySql с помощью Java
Code

import java.awt.event.ActionEvent;
import java.sql.*;
import java.util.Vector;

import javax.swing.*;

@SuppressWarnings("serial")
public class swingDB extends JFrame
{
//этот внутренний класс инкапсулирует нашу команду  
  class SimpleAction extends AbstractAction  
  {  
  SimpleAction()  
  {
   
  putValue(NAME, "Привет. Action!");
  putValue(SHORT_DESCRIPTION, "Это подсказка");
  putValue(MNEMONIC_KEY, new Integer('a'));
  }
  // в этом методе обрабатывается событие, как  
  //и в прежнем методе ActionListener  
  public void actionPerformed(ActionEvent e)  
  { // можно выключить команду, не зная.  
  // к каким компонентам она присоединена
  //System.out.println (JFrame.getFrames()[0]);
  //JFrame.getFrames()[0].dispose();
  System.exit(1);
  setEnabled(false); // изменим надпись
  putValue(NAME, "Прощай, Action!");
  } }
   
  class MsgBox extends JDialog
  {
  public MsgBox(String ss)
  {
  super();
  setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  setTitle("Ошибочка");
  JPanel jp = new JPanel();
  JLabel lab1 = new JLabel(ss);
  jp.add(lab1);
  Action action = new SimpleAction();
  JButton but = new JButton(action);
  but.setText("Закрыть");
  jp.add(but);
  getContentPane().add(jp);
  setSize(150,100);
  setVisible(true);
  }
  }
   
  static Connection con;
  /**
  * @param args
  */
  public swingDB()
  {
  super("TestDB");
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  String drv = "com.mysql.jdbc.Driver"; // Адрес драйвера
  String url = "jdbc:mysql://localhost/telbook"; // База данных
  String login = "root"; // Логин
  String pwd = ""; // Парольчик
  ResultSet result;
  try
  {
  Class.forName(drv); // Загрузка драйвера
  con = DriverManager.getConnection(url, login, pwd);
  Statement stmt = con.createStatement();
  //Подготавливаем запрос
  result = stmt.executeQuery("show columns from directory");
  //Обрабатываем его
   
  Vector<String> tHead = new Vector<String>();
  while (result.next())
  {
  tHead.add(result.getString("Field"));
  }
  System.out.println (tHead);
  result.close();
   
  Vector<Vector<String>> cont = new Vector<Vector<String>>();
  result = stmt.executeQuery("select * from directory");
  while (result.next())
  {
  Vector<String> ins = new Vector<String>();
  for (int i = 0; i < tHead.size(); i++)
  {
  ins.add(result.getString(tHead.elementAt(i).toString()));
  }
  cont.add(ins);
  }
  result.close();
  con.close();
  System.out.println (cont);
  JTable table = new JTable (cont,tHead);
  Box contents = new Box(BoxLayout.Y_AXIS);
  contents.add(new JScrollPane(table));
   
  // выводим окно на экран
  setContentPane(contents);
  pack();
  setVisible(true);
  }  
   
  catch (ClassNotFoundException ex)
  {
  System.err.println("Cannot find the database driver classes.");
  System.err.println(ex);
  new MsgBox("database error");
  }  
   
  catch (SQLException ex)
  {
  System.err.println("Cannot connect to this database.");
  new MsgBox("connect error");
  };
  }
   
  public static void main(String[] args)
  {
  // TODO Auto-generated method stub
  new swingDB();
  }

}

В Swing формирование полей таблицы можно реализовать несколькими путями.
В этом примере используются вектора (Vector)
При недоступности базы выводится окошко с сообщением об ошибке (типа Message Box что-то, хотя в Swing нет такого понятия, такой бокс надо делать самому)
Message Box реализован как дочерний класс от JDialog.
База данных описана в этом примере
Удачи.


Рисунок 1 - результат выполнения приложения.

На консоль также выводится содержимое векторов, это для отладочных целей. smile
Категория: Java | Добавил: C0demaker (23.06.2010)
Просмотров: 3666 | Комментарии: 1 | Рейтинг: 5.0/1
Всего комментариев: 1
0  
1 abraltere   (29.01.2012 04:40) [Материал]
Жестко smile Надо этот пост использовать в корыстных целях. Обязательно!
Ответ: Используйте
(Только в своих сообщениях не надо использовать ссылки на сайты не по теме, в этот раз удалил, в следующий, заблокирую учётку)


Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ant1 © 2025