Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Тема- Розробка програмного забезпечення на мові Jv для роботи з MySQL.html

Работа добавлена на сайт samzan.net:


Лабораторна робота №11

Тема:  Розробка програмного забезпечення на мові Java для роботи з MySQL.

Мета: Набути навичок по написанню програм на мові Java, які взаємодіють з сервером MySQL при допомозі JDBC.

Завдання: Розробити для створеної БД клієнтську программу з графічним інтерфейсом (GUI), яка підключатиметься до сервера БД і на вимогу користувача, може здійснює вибірку даних з БД та додавати/видаляти/змінювати записи.

Хід роботи:

Розробка програми здійснюється  в середовищі Eclipse. Для роботи з базою даних завантажую драйвер JDBC із офіційного сайту MySQL,  назва драйвера com.mysql.jdbc.Driver. Даний файл повинен знаходитись поруч із файлом java при запуску програми так як программа буде звертатись в данному випадку до драйвера динамічно підчас виконання.

База даних із якою буде працювати програма  в даному випадку має наступну структуру див. рисунок 1.

Рисунок 1 – Структура бази даних

Завантаження драйвера і зєднання із базою реалізоване в окремому методі класу і викликається при необхідності.

Метод забезпечення зєднання має наступний код:

public void connect() {

 try {

  String urlstring="jar:file:///c:/com.mysql.jdbc_5.1.5.jar!/";

  URLClassLoader cl = new URLClassLoader

         (new URL[]{new URL(urlstring)});

  cl.loadClass("com.mysql.jdbc.Driver").newInstance();

 } catch (Exception ex ){

    

  JOptionPane.showMessageDialog(new JFrame(), "Error step1");

  

 }

 

 try {

  String url = "jdbc:mysql://127.0.0.1/javtest";

  String login = "javtest";

  String passwd = "12345678";

   conn = DriverManager.getConnection(url, login, passwd);

   MyFrame.tex("Зєднання із базою даних встановлено ...");

 

 

 } catch (SQLException ex) {

   MyFrame.tex("Помилка зєднання... Перевірте налаштування (((");

 }

 

}

Також кожна функція програми: запис, вставлення запису, видалення та ін.. реалізовані в окремих методах що забезпечує об’єктно – орієнтовний підхід до написання.

Для реалізації інтерфейсу GUI в javа використано стандартні компоненти бібліотек Swing* .

Код реалізації графічного інтерфейсу користувача за обробки подій:

package testing;

import java.awt.Dimension;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JComboBox;

import javax.swing.JTextArea;

import javax.swing.JTextField;

public class inter {

 public static void main(String[] args) {

 MyFrame frame= new MyFrame();

 

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // задаємо дії при закритті фрейму

frame.setVisible(true);

}

}

class MyFrame extends JFrame

{

 public static final int FRAME_WIDTH=600;

 public static final int FRAME_HEIGHT=450;

 public static final JPanel panel = new JPanel();

 static String mas[] = {"Id","Дата","Рахунок","Категорія","Підкатегорія","Сума"} ;

String mmm[][] = {

  {"Id","Дата","Рахунок","Категорія","Підкатегорія","Сума"}

  };

 

 public MyFrame() {

  setSize(FRAME_WIDTH,FRAME_HEIGHT);

  

  this.add(panel);

  panel.setLayout(null);

  JButton button = new JButton("Перегляд");

 

  panel.add(button);      

  button.setBounds(10, 10, 100, 30) ;

  EventListener buttonAction = new EventListener(1);

  button.addActionListener(buttonAction);      

 

  JButton button1 = new JButton("Фільтр");

  panel.add(button1);      

   button1.setBounds(120, 10, 100, 30) ;

  EventListener button1Action = new EventListener(2);

  button1.addActionListener(button1Action);  

  

  JButton button2 = new JButton("Додати запис");

  panel.add(button2);

  button2.setBounds(240, 10, 100, 30) ;

  EventListener button2Action = new EventListener(3);

  button2.addActionListener(button2Action);  

  

  JButton button3 = new JButton("Оновити");

  panel.add(button3);

  button3.setBounds(360, 10, 100, 30) ;

  EventListener button3Action = new EventListener(4);

  button3.addActionListener(button3Action);

  

  JButton button4 = new JButton("Видалити");

  panel.add(button4);

  button4.setBounds(480, 10, 100, 30) ;

  EventListener button4Action = new EventListener(5);

  button4.addActionListener(button4Action);

  

  

  refresh();

  tex("???");

                  

  

}

static void refresh() {

 

 JTable jTabPeople = new JTable(BDConnect.mmm, mas);

    JScrollPane jscrlp = new JScrollPane(jTabPeople);

    jscrlp.setBounds(15, 100, 550, 200);

     jTabPeople.setPreferredScrollableViewportSize(new Dimension(250, 100));

 panel.add(jscrlp);

 

}

static void tex(String ss) {

 JLabel label = new JLabel();

JTextArea tex = new JTextArea();

 panel.add(tex);

 panel.add(label);

label.setBounds(15,300, 200, 20);

tex.setBounds(15,320, 550, 20);

label.setText("Статус зєднання:");

tex.setText(ss);

}

}

class frame_one extends JDialog { //вікно Фільтр

 public static final int FRAME_WIDTH=500;

 public static final int FRAME_HEIGHT=300;

 public frame_one() {

  setSize(FRAME_WIDTH,FRAME_HEIGHT);

  JPanel panel = new JPanel();

  JLabel label = new JLabel();

  this.add(panel);

  panel.setLayout(null);

  JButton button = new JButton("ОК");

     panel.add(button);

     label.setBounds(5, 5, 300, 30);

     label.setText("Виберіть критерій для виведення інформації:");

     panel.add(label);

  button.setBounds(100, 220, 100, 30) ;

 

  ButtonGroup radioGroup=new ButtonGroup();

  final JRadioButton radioButton = new JRadioButton("Вив. за назв. Кат.");

  radioGroup.add(radioButton);

  panel.add(radioButton);

     radioButton.setBounds(10, 40, 200, 30);

     

 final JComboBox combo = new JComboBox();

     

     panel.add(combo);

     combo.setBounds(220, 45, 120, 20);

     final BDConnect c = new BDConnect();

     c.category("SELECT * FROM categ");

     for(int i = 0 ; i<100; i++) {

      combo.addItem(c.cat[i]);   

      

      

     }

     

     for(int i = 0 ; i<100; i++) {

  c.cat[i]   ="";

     

       

      }

   

final JComboBox combo_two = new JComboBox();

     

     panel.add(combo_two);

   combo_two.setBounds(220, 67, 120, 20);

     

     c.category("SELECT * FROM rahunok");

     for(int i = 0 ; i<100; i++) {

      combo_two.addItem(c.cat[i]);   

      

      

     }

     

          

     final JRadioButton radioButton1 = new JRadioButton("Вив. за рахун.");

     radioGroup.add(radioButton1);

     panel.add(radioButton1);

     radioButton1.setBounds(10, 65, 200, 30);

     

       

     

     final JRadioButton radioButton2 = new JRadioButton("Вив. в пор. зростання суми");

     radioGroup.add(radioButton2);

     panel.add(radioButton2);

     radioButton2.setBounds(10, 90, 200, 30);

     

     final JRadioButton radioButton3 = new JRadioButton("Вив. в пор. спад. суми");

     radioGroup.add(radioButton3);

     panel.add(radioButton3);

     radioButton3.setBounds(10,115, 200, 30);

         

     

     button.addActionListener(new ActionListener(){

         

          public void actionPerformed(ActionEvent event)

            {

           if (radioButton.isSelected()) {

            String zapr = "SELECT * FROM cash WHERE cat_poz='"+combo.getSelectedItem().toString()+"'";

           c.quer(zapr); MyFrame.refresh();

           MyFrame.tex("Виведено за категорією ...");

           }

           if (radioButton1.isSelected()) {

            String zapr = "SELECT * FROM cash WHERE rahunok='"+ combo_two.getSelectedItem().toString()+"'";

           c.quer(zapr); MyFrame.refresh();

           MyFrame.tex("Виведено за рахунком ...");

           }

           

           if (radioButton2.isSelected()) {

            String zapr = "SELECT * FROM cash ORDER BY sum asc";

           c.quer(zapr); MyFrame.refresh();

           MyFrame.tex("Виведено в порядку зростання суми ...");

           }

           

           if (radioButton3.isSelected()) {

            String zapr = "SELECT * FROM cash ORDER BY sum desc ";

           c.quer(zapr); MyFrame.refresh();

           MyFrame.tex("Виведено в порядку спадання суми ...");

           }

           

                      

           dispose();

            }  

            });

}

// end frame Filtr

 //Вікно Додати

 

}

class frame_update  extends JDialog {

 public static final int FRAME_WIDTH=370;

 public static final int FRAME_HEIGHT=200;

 

 public frame_update() {

 

 setSize(FRAME_WIDTH,FRAME_HEIGHT);

  JPanel panel = new JPanel();

  JLabel label = new JLabel();

  JLabel label1 = new JLabel();

  this.add(panel);

  panel.setLayout(null);

  JButton button = new JButton("ОК");

    panel.add(button);

    label.setBounds(5, 5, 300, 30);

    label.setText("Оновлення запису:");

    label1.setText("Введіть id запису для оновлення:");

    panel.add(label);

    panel.add(label1);

    label1.setBounds(5, 50, 200, 20);

  button.setBounds(100, 120, 100, 30) ;

     final   JTextField id= new JTextField();

     panel.add(id);

     id.setBounds(220, 50, 80, 20);

     

     final  JTextField data = new JTextField();

     panel.add(data);

     data.setBounds(5, 90, 50, 20);

     data.setText("Дата");

          

    

 final JComboBox combo = new JComboBox();

     

     panel.add(combo);

     combo.setBounds(55, 90, 80, 20);

     final BDConnect c = new BDConnect();

     c.category("SELECT * FROM rahunok");

     for(int i = 0 ; i<100; i++) {

      combo.addItem(c.cat[i]);   

      

      

     }

     

     for(int i = 0 ; i<100; i++) {

  c.cat[i]   ="";

       

       

      }

   

final JComboBox combo_two = new JComboBox();

     

     panel.add(combo_two);

   combo_two.setBounds(135, 90, 80, 20);

     

     c.category("SELECT * FROM categ");

     for(int i = 0 ; i<100; i++) {

      combo_two.addItem(c.cat[i]);   

      

      

     }

              

          

  final   JTextField podcateg = new JTextField();

     panel.add(podcateg);

     podcateg.setBounds(215, 90, 70, 20);

     podcateg.setText("Підкатего.");

    

  final   JTextField sum = new JTextField();

     panel.add(sum);

     sum.setBounds(285,90, 60, 20);

     sum.setText("Сумма");

         

        button.addActionListener(new ActionListener(){

        

       public void actionPerformed(ActionEvent event)

         {

       String ss = "UPDATE cash SET "

         + "data='"+data.getText().toString()+"',"

           + "rahunok='"+combo.getSelectedItem().toString()+"',"

             + "cat_poz='"+combo_two.getSelectedItem().toString()+"',"

               + "sec_cat_poz='"+podcateg.getText().toString()+"',"

                 + "sum='"+sum.getText().toString()+"' "

                   + "WHERE id='"+id.getText().toString()+"'";

      c.add(ss);

       

        

     dispose();

         }  

         });

 

 

}

 

 

}

class frame_del extends JDialog {

 public static final int FRAME_WIDTH=370;

 public static final int FRAME_HEIGHT=200;

 final BDConnect c = new BDConnect();

 public frame_del() {

 

 setSize(FRAME_WIDTH,FRAME_HEIGHT);

  JPanel panel = new JPanel();

  JLabel label = new JLabel();

  JLabel label1 = new JLabel();

  this.add(panel);

  panel.setLayout(null);

  JButton button = new JButton("ОК");

    panel.add(button);

    label.setBounds(5, 5, 300, 30);

    label.setText("Вилалення запису:");

    label1.setText("Введіть id запису для видалення:");

    panel.add(label);

    panel.add(label1);

    label1.setBounds(5, 50, 200, 20);

  button.setBounds(100, 120, 100, 30) ;

     final   JTextField id= new JTextField();

     panel.add(id);

     id.setBounds(220, 50, 80, 20);

 

 button.addActionListener(new ActionListener(){

        

        public void actionPerformed(ActionEvent event)

          {

        String ss = "DELETE FROM cash WHERE id="+id.getText().toString()+"";

    

         c.add(ss);

         

      dispose();

          }  

          });

 

}}

class frame_add extends JDialog {

 

 public static final int FRAME_WIDTH=370;

 public static final int FRAME_HEIGHT=300;

 

 public frame_add() {

 setSize(FRAME_WIDTH,FRAME_HEIGHT);

  JPanel panel = new JPanel();

  JLabel label = new JLabel();

  this.add(panel);

  panel.setLayout(null);

  JButton button = new JButton("ОК");

     panel.add(button);

     label.setBounds(5, 5, 300, 30);

     label.setText("Вставити запис:");

     panel.add(label);

  button.setBounds(100, 220, 100, 30) ;

 

   ButtonGroup radioGroup=new ButtonGroup();

  final JRadioButton radioButton = new JRadioButton("Додати Рахунок");

  radioGroup.add(radioButton);

  panel.add(radioButton);

     radioButton.setBounds(10, 40,150, 30);

     

     final  JTextField rah = new JTextField();

     panel.add(rah);

     rah.setBounds(200, 45, 80, 20);

    

     

     final   JTextField cat = new JTextField();

     panel.add(cat);

     cat.setBounds(200, 65, 80, 20);

     //--------------------------------------------------

     

   final  JTextField data = new JTextField();

     panel.add(data);

     data.setBounds(5, 150, 50, 20);

     data.setText("Дата");

     

         

 final JComboBox combo = new JComboBox();

     

     panel.add(combo);

     combo.setBounds(55, 150, 80, 20);

     final BDConnect c = new BDConnect();

     c.category("SELECT * FROM rahunok");

     for(int i = 0 ; i<100; i++) {

      combo.addItem(c.cat[i]);   

      

      

     }

     

     for(int i = 0 ; i<100; i++) {

  c.cat[i]   ="";

       

            }

   

final JComboBox combo_two = new JComboBox();

     

     panel.add(combo_two);

   combo_two.setBounds(135, 150, 80, 20);

     

     c.category("SELECT * FROM categ");

     for(int i = 0 ; i<100; i++) {

      combo_two.addItem(c.cat[i]);   

      

      

     }

                

     

  final   JTextField podcateg = new JTextField();

     panel.add(podcateg);

     podcateg.setBounds(215, 150, 70, 20);

     podcateg.setText("Підкатего.");

    

  final   JTextField sum = new JTextField();

     panel.add(sum);

     sum.setBounds(285,150, 60, 20);

     sum.setText("Сумма");

     

     

     final JRadioButton radioButton1 = new JRadioButton("Додати Категорію");

     radioGroup.add(radioButton1);

     panel.add(radioButton1);

     radioButton1.setBounds(10, 67, 150, 30);

     

     final JRadioButton radioButton2 = new JRadioButton("Додати запис");

     radioGroup.add(radioButton2);

     panel.add(radioButton2);

     radioButton2.setBounds(10, 90, 200, 30);

 

 

 button.addActionListener(new ActionListener(){

        

        public void actionPerformed(ActionEvent event)

          {

         if (radioButton.isSelected()) {

         String zapr = "INSERT INTO rahunok (`id`,`cat`,`key`)   VALUES (NULL,'"+rah.getText().toString()+"',1)";  

         c.add(zapr);

          

         }

         if (radioButton1.isSelected()) {

          String zapr = "INSERT INTO categ (`id`,`cat`,`p_key`)   VALUES (NULL,'"+cat.getText().toString()+"',1)";

         c.add(zapr);

             

        

         }

         

         if (radioButton2.isSelected()) {

        String zapr = "INSERT INTO cash (`id`,`data`,`rahunok`,`cat_poz`,`sec_cat_poz`,`kolit`,`izmir`,`sum`)   VALUES (NULL,'"+data.getText().toString()+"','"+combo.getSelectedItem().toString() +"','"+combo_two.getSelectedItem().toString()+"','"+podcateg.getText().toString()+"',1,1,'"+sum.getText().toString()+"')";

        c.add(zapr);

    

       

         }

             

                       

          }  

          });

 

}}

class EventListener implements ActionListener{

 private int number;

 public EventListener(int namber) {

 number=namber;

 

}

 

  public void actionPerformed(ActionEvent event) {

  BDConnect c = new BDConnect();

  if (number==1)

  {

   c.quer("SELECT * FROM cash");

   MyFrame.refresh();

  }

   

   

    

 

  if (number == 2 ) {

   frame_one frame1 = new frame_one();

   frame1.setVisible(true);     

   

  }

  

  

  if (number == 3 ) {

   frame_add frame2 = new frame_add();

   frame2.setVisible(true);     

   

  }

  

  if (number == 4 ) {

   frame_update frame4 = new frame_update();

   frame4.setVisible(true);     

   

  }

  

  if (number == 5 ) {

   frame_del frame3 = new frame_del();

   frame3.setVisible(true);     

   

  }

  

 }

 

}

Методи виконання запитів реалізовані у окремому класі BDConnect. Код классу :

package testing

import java.net.URL;

import java.net.URLClassLoader;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.*;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import com.mysql.jdbc.Statement;

public class BDConnect {

 public static String[][] mmm = new String[100][6];

 public static String[] cat= new String[100];

  Connection conn;

public void quer( String qer) {

 try {

  connect();

  Statement stm = (Statement) conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

   ResultSet res =   stm.executeQuery(qer);

   int i=0; obnul();

   while (res.next()) {

    

   String id = res.getString("id");

   String data= res.getString("data");

   String rahunok= res.getString("rahunok");

   String categori= res.getString("cat_poz");

   String podkategori= res.getString("sec_cat_poz");

   String suma= res.getString("sum");

   

 mmm[i][0]=id;

 mmm[i][1]=data;

 mmm[i][2]=rahunok;

 mmm[i][3]=categori;

 mmm[i][4]=podkategori;

 mmm[i][5]=suma;

    i++;

   }

  conn.close();

 }

   

  catch(SQLException ex) {

   

    MyFrame.tex("Помилка при завантажені інформації");

    

   

    

   }

 

 }

 public void category(String qer) {

 try {

  connect();

  Statement stm = (Statement) conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

  ResultSet res =   stm.executeQuery(qer);

  int i=0;

  while (res.next()) {

  cat[i]= res.getString("cat");

   

  

   i++;

  }

  conn.close();

 }

 catch(SQLException ex) {

   MyFrame.tex("Помилка при загрузці категорій");

  

   

  }

 

 }

 

 private void obnul() {

 

 for (int i=0; i<100; i++)

   {

   mmm[i][0]=" ";

   mmm[i][1]=" ";

   mmm[i][2]=" ";

   mmm[i][3]=" ";

   mmm[i][4]=" ";

   mmm[i][5]=" ";

  }

 

}

 

public void add(String qer) {

 try {

connect();

   Statement stm = (Statement) conn.createStatement();

  

  int  res =  stm.executeUpdate(qer);

 if (res>0) {

  

  JOptionPane.showMessageDialog(new JFrame(), "Запит викоонано");

   

  

 }

}

 catch(SQLException ex) {

 JOptionPane.showMessageDialog(new JFrame(), "Помилка виконання запиту");

 

 }

}

 

}

Після написання експортую проект  у java файл, для запуску програми потрібно щоб на машині був встановлений JRE і сервер локальних баз даних.

Після запуску  виводиться головне вікно рисунок 1.

Рисунок 2 – Головне вікно програми

Після натиснення кнопки Перегляд оновляються записи в таблиці. Кнопка фільтр викликає вікно (рис. 3) в якому можна вибрати параметри вибірки. Кнопка Додати запис викликає вікно додавання нового запису, категорії, рахунка (рисунок 4). Кнопка Оновити і Видалити – оновити запис в таблиці по id (рисунок 5) і видалити запис по id (рисунок 6) відповідно.

Рисунок 3 – Вікно параметрів вибірки

Рисунок 4 – Вікно додавання запису в базу

Рисунок 5 – Вікно оновлення запису

Рисунок 6 – Вікно видалення запису

Висновок: Набув навичок по написанню програм на мові Java, які взаємодіють з сервером MySQL при допомозі JDBC.




1. Задание на лабораторную работу 3 Работа с текстом документа в ИПС Консультант Плюс Задание 1 Отрабо
2. тема. Строение и функции спинного мозга и отделов головного мозга.html
3. Иван Сергеевич Шмелёв
4. ВАГРИУС 1995 П.html
5. Реферат на тему- Способи та методики вивчення власної психологічної готовності до військової служби Що
6.  Свято першого дзвоника 1
7. по теме или механики которые хотите использовать
8. как раз то чего не хватает в летнюю жару
9. а в машинах переменного тока и универсальных с учетом черт
10. Историческая часть пос
11. Обед и беседа славянские этимологии
12. Роза Мира вм РОЗИН Сущность эзотерической доктрины Много лет занимаясь изучением эзотерических учен
13. com-bestpslterium Самая большая библиотека ВКонтакте Присоединяйтесь Теперь запомните сказала мама Ваш
14. варианты определения понятия конфликт в современной литературе
15. Дипломная работа Лавровой Алёны Юрьевны Открытие новых секционных направлений в детских
16.  Функции и принципы маркетинга
17. Достоинства и недостатки плановой и рыночной экономики Смешанный тип экономики
18. общую теорию конфликта которая позволит обществу контролировать конфликты управлять ими прогнозировать
19. СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
20. Радиопротекторы