GUI - Informationsübergabe

Status
Nicht offen für weitere Antworten.
Halli hallo zusammen,

ich habe mir mal etwas gebastelt.. Undzwar geht es um Warenbestellung. Das Ziel besteht darin alles zu wiederholen, was ich in den letzten Monaten gemacht habe. Ich habe Datenbanken, GUI's etc. angewendet. Nun habe ich ein Problem.

Die Klasse Telefonkauf:
Java:
import java.awt.EventQueue;
import javax.swing.*;
import java.awt.*;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.border.TitledBorder;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import java.awt.Component;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.GroupLayout.Alignment;


public class Telefonkauf {

    public JFrame frame;
    private JTextField textField;
    private JTextField textField_1;
    private JTextField textField_2;
    private Connection conn = null;
    private Statement stmt = null;
    private String query;
    public JPanel panelArtikel;
    public static JTextField menge;
    Bestellen gui = new Bestellen();
    public static int buttonClick = 0;
    public static JLabel gekaufteArtikeln[];
    private JPanel panel_3;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Telefonkauf window = new Telefonkauf();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public Telefonkauf() {
        initialize();
    }

    private void initialize() {
    
        //Sql connection
         try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection ("jdbc:sqlite:C:/Users/Hakan/Desktop/SQL/JDBC.sqlite");
            stmt = conn.createStatement();
        } catch (ClassNotFoundException e1) {e1.printStackTrace();}
          catch (SQLException e1) {e1.printStackTrace();}
     
     
        try {
            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (Exception e) {}
    
        frame = new JFrame();
        frame.setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\winconf\\workspace_light_luna\\DAB\\src\\Logo\\topLogo.png"));
        frame.getContentPane().setBackground(SystemColor.activeCaption);
        frame.setBounds(100, 100, 1122, 788);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
    
        JPanel panel_1 = new JPanel();
        panel_1.setBorder(new TitledBorder(null, " ", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_1.setBounds(10, 7, 200, 62);
        frame.getContentPane().add(panel_1);
        panel_1.setLayout(null);
    
        JLabel lblAngemeldetAls = new JLabel("User:");
        lblAngemeldetAls.setBounds(14, 18, 60, 23);
        panel_1.add(lblAngemeldetAls);
        lblAngemeldetAls.setForeground(new Color(0, 0, 51));
        lblAngemeldetAls.setFont(new Font("Trajan Pro 3", Font.BOLD, 17));
        lblAngemeldetAls.setBackground(new Color(204, 153, 0));
    
        try{
            String anmeldeInfo = "SELECT * FROM S_KUNDE WHERE EMAIL ='" + Anmelderegister.anmelden.getText() + "' ";
            ResultSet email = stmt.executeQuery(anmeldeInfo);
            int count=0;
            while(email.next()){
                count++;
                if(count == 1){
                    JLabel angemeldetLabel = new JLabel(email.getString(2) + " " + email.getString(3));
                    angemeldetLabel.setForeground(new Color(51, 102, 51));
                    angemeldetLabel.setFont(new Font("Source Code Pro Semibold", Font.BOLD, 18));
                    angemeldetLabel.setBounds(68, 22, 200, 16);
                    panel_1.add(angemeldetLabel);
                }
            }
        }catch(SQLException e){
            e.printStackTrace();
        }
    
        JLabel lblBestellung = new JLabel("Bestellung:");
        lblBestellung.setForeground(new Color(0, 0, 51));
        lblBestellung.setFont(new Font("Trajan Pro 3", Font.BOLD, 18));
        lblBestellung.setBackground(new Color(204, 153, 0));
        lblBestellung.setBounds(10, 113, 134, 30);
        frame.getContentPane().add(lblBestellung);
    
        JLabel lblSucheArtikel = new JLabel("Suche Artikel:");
        lblSucheArtikel.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 14));
        lblSucheArtikel.setBounds(20, 167, 116, 30);
        frame.getContentPane().add(lblSucheArtikel);
    
        JPanel panel = new JPanel();
        panel.setBackground(Color.BLACK);
        panel.setBorder(new TitledBorder(null, "Gefundene Artikeln:", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel.setBounds(138, 217, 396, 450);
        frame.getContentPane().add(panel);
        panel.setLayout(null);
    
        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        scrollPane.setBounds(6, 6, 384, 438);
        panel.add(scrollPane);
    
        panelArtikel = new JPanel();
        scrollPane.setViewportView(panelArtikel);
        GroupLayout gl_panelArtikel = new GroupLayout(panelArtikel);
        gl_panelArtikel.setHorizontalGroup(gl_panelArtikel.createParallelGroup(Alignment.LEADING).addGap(0, 363, Short.MAX_VALUE));
        gl_panelArtikel.setVerticalGroup(gl_panelArtikel.createParallelGroup(Alignment.LEADING).addGap(0, 432, Short.MAX_VALUE));
        panelArtikel.setLayout(gl_panelArtikel);
    
        JPanel panel_2 = new JPanel();
        panel_2.setBorder(new TitledBorder(null, " ", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_2.setBounds(664, 217, 401, 450);
        frame.getContentPane().add(panel_2);
        panel_2.setLayout(null);
    
        JLabel lblArtikelNichtGefunden = new JLabel("Artikel nicht gefunden?");
        lblArtikelNichtGefunden.setBounds(14, 18, 313, 30);
        panel_2.add(lblArtikelNichtGefunden);
        lblArtikelNichtGefunden.setForeground(new Color(0, 0, 51));
        lblArtikelNichtGefunden.setFont(new Font("Trajan Pro 3", Font.BOLD, 18));
        lblArtikelNichtGefunden.setBackground(new Color(204, 153, 0));
    
        JLabel lblBestellenSieDie = new JLabel("Bestellen Sie die gew\u00FCnschte Artikeln:");
        lblBestellenSieDie.setBounds(14, 36, 373, 30);
        panel_2.add(lblBestellenSieDie);
        lblBestellenSieDie.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 14));
    
        JLabel lblKategorie = new JLabel("Kategorie:");
        lblKategorie.setBounds(14, 88, 102, 30);
        panel_2.add(lblKategorie);
        lblKategorie.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 13));
    
        JComboBox comboBox = new JComboBox();
        comboBox.setBounds(119, 90, 166, 26);
        panel_2.add(comboBox);
    
        JLabel lblBezeichnung = new JLabel("Bezeichnung:");
        lblBezeichnung.setBounds(14, 130, 102, 30);
        panel_2.add(lblBezeichnung);
        lblBezeichnung.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 13));
    
        JComboBox comboBox_1 = new JComboBox();
        comboBox_1.setBounds(119, 132, 166, 26);
        panel_2.add(comboBox_1);
    
        JLabel lblMenge = new JLabel("Menge:");
        lblMenge.setBounds(14, 217, 55, 30);
        panel_2.add(lblMenge);
        lblMenge.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 13));
    
        JComboBox comboBox_2 = new JComboBox();
        comboBox_2.setBounds(119, 219, 55, 26);
        panel_2.add(comboBox_2);
    
        JLabel lblNettopreis = new JLabel("Nettopreis:");
        lblNettopreis.setBounds(14, 175, 102, 30);
        panel_2.add(lblNettopreis);
        lblNettopreis.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 13));
    
        textField_1 = new JTextField();
        textField_1.setBounds(119, 174, 92, 26);
        panel_2.add(textField_1);
        textField_1.setEditable(false);
        textField_1.setForeground(new Color(204, 153, 0));
        textField_1.setColumns(10);
    
        JLabel lblGesamtpreis = new JLabel("Gesamtpreis:");
        lblGesamtpreis.setBounds(14, 301, 102, 30);
        panel_2.add(lblGesamtpreis);
        lblGesamtpreis.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 13));
    
        textField_2 = new JTextField();
        textField_2.setBounds(119, 303, 177, 26);
        panel_2.add(textField_2);
        textField_2.setEditable(false);
        textField_2.setForeground(new Color(204, 153, 0));
        textField_2.setColumns(10);
    
        JButton btnBestellen = new JButton("Bestellen");
        btnBestellen.setBounds(38, 392, 332, 37);
        panel_2.add(btnBestellen);
        btnBestellen.setForeground(new Color(204, 153, 0));
        btnBestellen.setBackground(new Color(0, 51, 51));
    
    
        textField = new JTextField();
        textField.addCaretListener(new CaretListener() {
        public void caretUpdate(CaretEvent e) {
            panelArtikel.removeAll();
                try{
                    String query = "SELECT * FROM s_artikel JOIN s_posten USING(artikelnr) where lower(bezeichnung) LIKE lower('" + textField.getText() + "%')";
                    ResultSet res = stmt.executeQuery (query);
                 
                     int count = 0;
                     int positionY = 10;
                     while (res.next()) {
                 
                        String artikel = res.getString(2);
                        String nettopreis = res.getString(4);
                        String bestand = res.getString(6);
                        String artikelnr = res.getString(1);
                        String bestellnr = res.getString(10);
                    
                        count++;
                    
                        JLabel label = new JLabel("<html><body><br><div style='border-style: solid;'>"+artikel + " "+ "<br>" + "Nettopreis: "+ nettopreis + "€" + " " + "<br>" + "Bestand: " + bestand +"\n"+ "</div></body></html>");
                        //Bestellen
                        JButton bestellen = new JButton("Bestellen");
                        bestellen.addActionListener(new ActionListener(){
                            public void actionPerformed(ActionEvent e){
                            
                                buttonClick++;
                            
                                menge = new JTextField();
                                menge.setBounds(0, 0, 100, 20);
                        
                                Object[] message = {"Menge eingeben: \n", menge};
                                Object[] options = { "Bestellen", "Abbrechen" };
                                int n = JOptionPane.showOptionDialog(new JFrame(), message, "", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
                            
                                if(n == JOptionPane.OK_OPTION){ // Bestellen
                                       if(!menge.getText().matches("^[0-9]*$")){
                                            System.out.println("Bei der Menge nur Zahlen eingeben!");
                                        }else if(menge.getText().equals("")){
                                            System.out.println("Bitte Menge eingeben!");
                                        }else{
                                            try {
                                                String suchen = "SELECT * FROM s_artikel JOIN s_posten USING (artikelnr) WHERE artikelnr = '"+ artikelnr + "' AND bezeichnung = '"+ artikel +"' AND bestellnr = '"+ bestellnr +"'";
                                                ResultSet su = stmt.executeQuery(suchen);
                                                int zaehler = 0;
                                                while(su.next()){
                                                    zaehler++;
                                                    if(zaehler == 1){
                                                        //System.out.println(artikel + " " + nettopreis + " " + bestand);
                                                        buttonClick = 1;
                                                        bestellen(artikel , nettopreis, bestand);
                                                    
                                                    }
                                                }
                                            } catch (SQLException e1) {e1.printStackTrace();}
                                    
                                        }
                                }if(n == JOptionPane.NO_OPTION){ // Abbrechen
                                     System.out.println("Bestellung abgebrochen!");
                                }
                                if(n == JOptionPane.CLOSED_OPTION){ // Abbrechen
                                     System.out.println("Bestellung abgebrochen!");
                                }

                            }
                        });
                        bestellen.setBounds(8, positionY+75, 115, 20);
                        bestellen.setBackground(Color.BLACK);
                        bestellen.setForeground(Color.ORANGE);
                        //bestellen ende
                    
                        label.setBounds(10, positionY, 300, 80);
                        panelArtikel.add(label);
                        panelArtikel.add(bestellen);
                        positionY+=90;
                     }
                     gl_panelArtikel.setVerticalGroup(gl_panelArtikel.createParallelGroup(Alignment.LEADING).addGap(0, positionY + 40, Short.MAX_VALUE));
                     panelArtikel.repaint();
                 
                }catch(SQLException a){
                    a.printStackTrace();
                }
            }
        });
        textField.setForeground(new Color(204, 153, 0));
        textField.setBounds(138, 161, 396, 44);
        frame.getContentPane().add(textField);
        textField.setColumns(10);
    
        JButton fertig = new JButton("Bestellung abschliessen");
        fertig.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                frame.dispose();
                gui.frame.setVisible(true);
            }
        });
        fertig.setForeground(new Color(204, 153, 0));
        fertig.setBackground(new Color(0, 51, 51));
        fertig.setBounds(138, 680, 396, 37);
        frame.getContentPane().add(fertig);
    
        JPanel panel_4 = new JPanel();
        panel_4.setBorder(new TitledBorder(null, "JPanel title", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_4.setBounds(664, 18, 310, 177);
        frame.getContentPane().add(panel_4);
        panel_4.setLayout(null);
    
    
    
    
        //NUR FÜR TESTZWECKE GEHÖRT ANSONSTEN NICHT ZUR GUI!!!
        JScrollPane scrollPane_1 = new JScrollPane();
        scrollPane_1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scrollPane_1.setBounds(14, 18, 282, 145);
        panel_4.add(scrollPane_1);
    
        panel_3 = new JPanel();
        scrollPane_1.setViewportView(panel_3);
    
        //Wird angezeigt
        JLabel tst = new JLabel("Test");
        tst.setBounds(5, 5, 25, 25);
        panel_3.add(tst);
    
    }

    public void bestellen(String artikel, String nettopreis, String bestand){
    
        int posY = 5;
        gekaufteArtikeln = new JLabel[buttonClick];
        System.out.println(buttonClick);
        for(int i = 0; i < gekaufteArtikeln.length; i++){
            gekaufteArtikeln[i] = new JLabel("<html><body><br><div style='border-style: solid;'>"+artikel + " "+ "<br>" + "Nettopreis: "+ nettopreis + "€" + " " + "<br>" + "Bestand: " + bestand +"\n"+ "</div></body></html>");
            gekaufteArtikeln[i].setBounds(5, posY + 5, 55, 16);
            frame.getContentPane().add(gekaufteArtikeln[i]);
        
            //Wird nicht angezeigt
            JLabel tst_2 = new JLabel("Test_2");
            tst_2.setBounds(5, 5, 25, 25);
            panel_3.add(tst_2);
        }
    }


}



Bestellen Klasse:

Java:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.UIManager;
import java.awt.SystemColor;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JPanel;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.border.TitledBorder;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ScrollPaneConstants;


public class Bestellen {

    public JFrame frame;
    private Connection conn = null;
    private Statement stmt = null;
    private String query;
    //public static JLabel bestellteArtikeln [] = new JLabel[Telefonkauf.buttonClick];

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Bestellen window = new Bestellen();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public Bestellen() {
        initialize();
    }

    private void initialize() {
    
        //Sql connection
         try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection ("jdbc:sqlite:C:/Users/Hakan/Desktop/SQL/JDBC.sqlite");
            stmt = conn.createStatement();
        } catch (ClassNotFoundException e1) {e1.printStackTrace();}
          catch (SQLException e1) {e1.printStackTrace();}
    
        try {
            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (Exception e) {}
    
        frame = new JFrame();
        frame.setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\winconf\\workspace_light_luna\\DAB\\src\\Logo\\topLogo.png"));
        frame.getContentPane().setBackground(SystemColor.activeCaption);
        frame.getContentPane().setLayout(null);
        frame.setBackground(SystemColor.inactiveCaptionText);
        frame.setBounds(100, 100, 750, 664);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        JLabel lblBestellteArtikeln = new JLabel("Bestellte Artikeln:");
        lblBestellteArtikeln.setForeground(new Color(0, 0, 51));
        lblBestellteArtikeln.setFont(new Font("Trajan Pro 3", Font.BOLD, 18));
        lblBestellteArtikeln.setBackground(new Color(204, 153, 0));
        lblBestellteArtikeln.setBounds(151, 38, 244, 30);
        frame.getContentPane().add(lblBestellteArtikeln);
    
        JPanel panel = new JPanel();
        panel.setBorder(new TitledBorder(null, "Bestellte Artikeln:", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel.setBackground(Color.BLACK);
        panel.setBounds(151, 80, 426, 455);
        frame.getContentPane().add(panel);
        panel.setLayout(null);
    
        JButton button = new JButton("Bestellen");
        button.setForeground(new Color(204, 153, 0));
        button.setBackground(new Color(0, 51, 51));
        button.setBounds(378, 547, 199, 37);
        frame.getContentPane().add(button);
    
        JButton btnZurck = new JButton("Zur\u00FCck");
        /*btnZurck.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                frame.dispose();
                Telefonkauf obj = new Telefonkauf();
                obj.frame.setVisible(true);
            }
        });*/
        btnZurck.setForeground(new Color(204, 153, 0));
        btnZurck.setBackground(new Color(0, 51, 51));
        btnZurck.setBounds(151, 547, 199, 37);
        frame.getContentPane().add(btnZurck);
    
    
        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        scrollPane.setBounds(6, 6, 414, 443);
        panel.add(scrollPane);
    
        JPanel panel_1 = new JPanel();
        scrollPane.setViewportView(panel_1);
        panel_1.setLayout(null);
    
    
        //Informationen aus Telefonkauf entnehmen und ausgaben
        /*int positionY = 10;
        for(int i = 0; i < Telefonkauf.gekaufteArtikeln.length ;i++){ --> Liefert null zurück
            Telefonkauf.gekaufteArtikeln[i].setBounds(16, positionY+14, 371, 45);
            panel_1.add(Telefonkauf.gekaufteArtikeln[i]);
        }*/
    
    
    
    }
}


Undzwar kann ich bei der "bestellen Methode (Telefonkauf-Klasse)" nicht die angeklickten Informationen in einem JLabel speichern und ausgeben. Ich würde sie gerne in einem JLabel abspeichern und dann es übergeben, damit es bei der Bestellen-Klasse ausgegeben werden kann.

Zum Testen haben ich zwei normale JLabels erstellt und die mal ausführen lassen. Bei der "initialize() Methode" wird es angezeigt, aber bei der "bestellen() - Methode" geht es nicht.

Ich würde mich sehr freuen, wenn Ihr mir irgendwie weiter helfen könnt. Sei es Tipps oder irgendwelche Code-Verbesserungen.


Mit freundlichen Grüßen
iLoveProgramming
 
Zuletzt bearbeitet:

thecain

Top Contributor
Code:
setLayout(null);

Wurde euch tatsächlich begebracht keinen Layoutmanager zu verwenden?
 
Code:
setLayout(null);

Wurde euch tatsächlich begebracht keinen Layoutmanager zu verwenden?

Das ganze habe ich mit dem Window Builder erstellt, weil ich keine Lust auf den ganzen Layout dinger da habe. Haupsächlich wollte ich hier Datenbanken wiederholen.

Und Außerdem ist es ein unnötiger Kommentar, denn es geht überhaupt nicht darum, was für ein Layout ich benutze...

MfG
 

Harry Kane

Top Contributor
es geht überhaupt nicht darum, was für ein Layout ich benutze
Doch genau darum geht es. Offensichtlich wird das JLabel, was du in deiner bestellen-Methode erzeugt hast, nicht angezeigt, und das ist im Kern ein Layoutproblem.
Abgesehen davon:
1. Keinen Gui- und Datenbankcode mischen.
2. Klassen sinnvoll in Methoden aufteilen. Die riesige initialize-Methode deiner Telefonkauf-Klasse wäre mir persönlich viel zu unübersichtlich.
3. Sinnvolle, sprechende Variablennamen wählen. textField_1, panel_2... was soll man damit anfangen?
4. Lege dir für Datenobjekte eigene Klassen an, z. B. Artikel mit den Eigenschaften Name, Preis, Mengeneinheit, und Warenkorb mit einer Liste von Artikeln.
 
Ich glaube Ihr versteht das ganze nicht oder?

Die Schritte die du aufgeschrieben hast, sind mir bewusst. Juckt mich aber in dem Fall nicht. "KEINEN GUI UND DATENBANKCODE MISCHEN" da musste ich echt lachen, sorry. Eure unnötige Kommentare interessieren mich überhaupt nicht.

Lesen bildet. Ich habe auch geschrieben, dass ich einfach nur Datenbanken wiederholen wollte.
Außerdem lag das Problem nicht beim Layout.

Hab das Problem selbstständig gelöst. Da will man kurz um Hilfe bitten, dann kommt so ein Scheiß.
 

Joose

Top Contributor
Ich glaube Ihr versteht das ganze nicht oder?

Doch du wolltest Hilfe und Tipps bzw. Code-Verbesserungen. Eine direkte Hilfe wurde zwar nicht geliefert aber immerhin haben dich jemand auf mögliche Code-Verbesserungen hingewiesen.

Die Schritte die du aufgeschrieben hast, sind mir bewusst. Juckt mich aber in dem Fall nicht.

Dann darfst du nicht nach Code-Verbesserungen fragen. Und wenn es dir sowieso bewusst ist wäre es doch sinnvoll gewesen dies einfach umzusetzen während der Entwicklung ;)

"KEINEN GUI UND DATENBANKCODE MISCHEN" da musste ich echt lachen, sorry. Eure unnötige Kommentare interessieren mich überhaupt nicht.

Ich weiß echt nicht warum das zum Lachen ist? Es ist nun mal Fakt, dass man UI Code und Datenbankzugriffe sauber trennen sollte um die Wiederverwendbarkeit von Code zu erhöhen. Auch wenn du nur Datenbanken wiederholen wolltest sollte man darauf Wert legen (es vereinfacht auch die Suche nach möglichen Fehler beim Arbeiten mit der DB).
Aber wenn dich unsere Kommentare nicht interessieren ist dieser ganze Thread doch unnötig oder?

Ich habe auch geschrieben, dass ich einfach nur Datenbanken wiederholen wollte.

Gut dann eine mögliche Verbesserung zu deinem "Datenbankcode":
Dein SQL Statements sind anfällig für SQL Injection, du solltest lieber PreparedStatements verwenden.
Deine Verbindung und Statements solltest du erst dann initialisieren wenn du sie wirklich brauchst und danach auch wieder schließen.
In beiden (gezeigten) Klassen verwendest du jeweils ein anderes Connection Objekt. Du solltest eine "zentrale Stelle" haben welche dir die Connection Objekte liefert und auch wieder zurücknimmt und sauber schließt. Vergisst du irgendwo mal eine Connection zu schließen kann es passieren das du keine neuen mehr aufmachen kannst.

Hab das Problem selbstständig gelöst. Da will man kurz um Hilfe bitten, dann kommt so ein Scheiß.

Wie schon oben gesagt: Du hast um Hilfe und Code Verbesserungen gebeten.
Und ein "Scheiß" wurde nicht geschrieben, jede der Antworten hat seine Berechtigung und ob dir das klar war/ist oder nicht kann keiner von uns wissen. Wir sehen eben nur das es nicht entsprechend umgesetzt wurde und daher wurde es von den anderen angemerkt (Trennung von UI und DB Code, LayoutManager, ...).
Um in Zukunft solche Sachen zu vermeiden könntest du natürlich direkt dazu schreiben das es keine "saubere Trennung" vorliegt oder du dich nicht großartig mit dem Layout beschäftigten wolltest usw.

PS: Ich schließe den Thread damit hier keine größere Diskussion entsteht.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben