Будь умным!


У вас вопросы?
У нас ответы:) 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. Тема- Облік і звітність суб~єктів малого підприємництва Час- 4 год
2. по теме- Вредные привычки курение
3. национализация и института национализации Поняти
4. Контрольная работа- Хозяйственный процесс
5. Парки Діснея як туристичні центри Їх роль для розвитку міжнародного туризму
6. Электрические машины постоянного ток
7. История социальной педагогики для студентов заочного отделения 20132014 уч
8. реферат дисертації на здобуття наукового ступеня кандидата педагогічних наук.html
9. тематизація знань у Лікеї Аристотеля Платон про символ печери у Державі Декарт про метод пізнання у Мір
10. Тема 10- Сестринский процесс при черепномозговых травмах поврежден
11. і. Вони вирощували хліб і розводили худобу мали розвинені ремесла й промисли а руські купці були відомі на то
12. Курсовая работа- Характеристика полномочий президента Росси
13. Убедительность судебной речи
14. Процессы памяти- Запоминание сохранение узнавание воспроизведение
15. 25442
16. Понятие мирового хозяйства
17. Место и роль органов исполнительной власти в системе государственных органов
18. История хирургии и кафедры факультетской хирургии Хирургическая этика и деонтология
19. швейцарский поход вершина полководческой деятельности Суворова
20. тематически близкой ей но принципиально отличной от нее теологией т