Zrywanie połączenia z bazą danych

0

Hi, piszę prostego klienta bazy danych. W klasie zTest sprawdzam czy uzyskuję połączenie z bazą dachy. W klasie zAddBase chciałbym skorzystać z tego połączenia i wprowadzić do bazy dane.

package baza;

import java.awt.event.ActionEvent;

import javax.swing.*;

import java.awt.event.ActionListener;
import java.sql.*;

class Frame extends JFrame {
String name_base;
Statement st;
    public Frame() {
        setSize(350, 350);
        setTitle("Title");

        jtp.add("Test ", new zTest());
        jtp.add("Dodanie", new zAddBase());
        jtp.add("Comand", new zCommand());
        add(jtp);
    }

    public class zTest extends JPanel {

        public zTest() {

            connect.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    name_base = fNameBase.getText();
                    try {
                        Class.forName("com.mysql.jdbc.Driver");
                        Connection pol = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + fNameBase.getText(),
                                fNameUser.getText(),
                                new String(fPassUser.getPassword()));
                            st = pol.createStatement();

                        JOptionPane.showMessageDialog(null, "Polaczono");
                    } catch (Exception ek) {
                        JOptionPane.showMessageDialog(null, "Nie udalo sie polaczyc z baza");
                    }
                }
            });
            setLayout(new java.awt.GridLayout(4, 2));

            add(nameBase);
            add(fNameBase);

            add(nameUser);
            add(fNameUser);

            add(passUser);
            add(fPassUser);

            add(connect);
        }

        String name;
        String user;
        String pass;
        JButton connect = new JButton("Connetc");
        JLabel nameBase = new JLabel("Nazwa: ");
        JLabel nameUser = new JLabel("Uzytkownik: ");
        JLabel passUser = new JLabel("Haslo: ");
        JTextField fNameBase = new JTextField("Name Base");
        JTextField fNameUser = new JTextField("Name User");
        JPasswordField fPassUser = new JPasswordField("Pass");

    }
    

    public class zAddBase extends JPanel {

        public zAddBase() {
            for (int i = 0; i < 4; i++) {
                add(labs[i]);
                add(fields[i]);

            }
            addbutton.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {   
                    String polecenie = "insert into" + name_base+ " (Nazwa, Rozmiar, Own, Uwagi) values(" +
                                                                                                                                            fields[0].getText() + "," + fields[1].getText() + "," +
                                                                                                                                            fields[2].getText() + "," + fields[3].getText() + ");";

                    try {
                        st.executeUpdate(polecenie);
                        st.close();
                        JOptionPane.showMessageDialog(null, "Zapisano dane");
                    } catch (Exception ek) {
                        JOptionPane.showMessageDialog(null, "Blad zapisu danych");
                    }
                    validate();
                }
            });
            add(addbutton);
        }
        JLabel labs[] = {new JLabel("Naza: "), new JLabel("Rozmiar: "), new JLabel("Wlasciciel: "), new JLabel("Uwagi: ")};
        JTextField fields[] = {new JTextField(50), new JTextField(50), new JTextField(50), new JTextField(50)};
        JButton addbutton = new JButton("Add");
    }
    

    private class zCommand extends JPanel {

        public zCommand() {
        }
    }
    
    JTabbedPane jtp = new JTabbedPane();
}

public class Main {

    public static void main(String[] args) {
        Frame x = new Frame();
        x.setVisible(true);
    }
}

Będę wdzięczny za podpowiedz dlaczego nie mogę się z bazą połączyć.

0

Zmień obsługę błędów, zamiast komunikatów "Wystąpił błąd.." (lub równolegle z nimi na konsoli) wyświetlaj co najmniej ek.toString(). Przydatne może być ek.printStackTrace() i ek.getErrorCode() jeśli ek jest typu SQLException.

1 użytkowników online, w tym zalogowanych: 0, gości: 1