Будь умным!


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

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

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

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.11.2024

Лабораторна робота №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. Хрысціянства яго ўзнікненне і фарміраванне
2. Правовое регулирование перевозки товаров под таможенными печатями.html
3. Пермский государственный педагогический университет Факультет педагогики и психологии детства Кафедр.
4. Меланотении
5. статья Подавляющее большинство людей западного склада не умеют продуктивно отдыхать и восстанавливаться
6. Россия, США и «цветные революции»
7. Несостоятельность банкротство юридических лиц1
8. вариант При ишемическом инсульте вследствие тромбоза мозговых сосудов вводятся препараты- кровоостанав
9. реферата по дисциплине Общая энергетика для студентов очной формы обучения Реферат по дисциплине Общ
10. Очень краткая история Неаполитанского Сицилийского королевства
11. Климат Антарктиды
12. Новомосковский победитель конкурса Лидер строительного качества ~ 2013 01
13. Курсовая работа- Ресурси аграрного підприємства та ефективність їх використання
14. Чудодейственное средство от всех болезней
15. вариант трехзвенной системы управления ДОГОВОР О СОЗДАНИИ ЗАКРЫТОГО АКЦИОНЕРНОГО ОБЩЕСТВА
16. 3 часа пешеходная В стоимость тура входит- авиаперелет а-к ЧСА Алматы ~ Прага ~ Алматы эконом клас.html
17. ПОЛЬ САРТР JenPul Srtre ЖАН ПОЛЬ САРТР- ВЕХИ ЖИЗНИ И ТВОРЧЕСТВА
18. на тему Английская революция ~ первая революция нового времени.html
19. тема финансовых коэффициентов В настоящем разделе речь пойдет об использовании системы коэффициентов д
20. Электроизоляционные лаки и их классификация