Wie kann ich den Wert aus einer If abfrage ausgeben

Ickenichdu

Mitglied
Hey Leute ich bin grade dabei mein erstes Programm zuschreiben welches sich mit einer SQL Datenbank verbindet und dann über Checkboxen die Befehle für die Jeweiligen Tabels gesammelt werden und anschließend erst einmal gespeichert werden bevor ich sie in ein Statement gebe. Durch If kriege ich leider nur den wert welche Checkboxen die ich gewählt habe in der Console ausgegeben.
Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Auswahlfenster implements ActionListener {

    
    
    JFrame Auswahldatenbank = new JFrame();
    JPanel AuswahlCheckBox = new JPanel();
    JButton SuchButton = new JButton("Suchen");
    
    
    JCheckBox checkBoxat1 = new JCheckBox("Attribut 1");
    JCheckBox checkBoxat2 = new JCheckBox("Attribut 2");
    JCheckBox checkBoxat3 = new JCheckBox("Attribut 3");
    JCheckBox checkBoxat4 = new JCheckBox("Attribut 4");
    JCheckBox checkBoxat5 = new JCheckBox("Attribut 5");
    JCheckBox checkBoxat6 = new JCheckBox("Attribut 6");
    JCheckBox checkBoxat7 = new JCheckBox("Attribut 7");
    JCheckBox checkBoxat8 = new JCheckBox("Attribut 8");
    JCheckBox checkBoxat9 = new JCheckBox("Attribut 9");
    JCheckBox checkBoxat10 = new JCheckBox("Attribut 10");
    
    String attribut1 = new String("Attribut 1");
    String attribut2 = new String("Attribut 2");
    String attribut3 = new String("Attribut 3");
    String attribut4 = new String("Attribut 4");
    String attribut5 = new String("Attribut 5");
    String attribut6 = new String("Attribut 6");
    String attribut7 = new String("Attribut 7");
    String attribut8 = new String("Attribut 8");
    String attribut9 = new String("Attribut 9");
    String attribut10 = new String("Attribut 10");
    
    
    
    Auswahlfenster(){
        
        JPanel panelNorth = new JPanel();
        JPanel panelSouth = new JPanel();
        JPanel panelWest = new JPanel();
        JPanel panelEast = new JPanel();
        
        panelNorth.setPreferredSize(new Dimension(100,100));
        
        
        panelSouth.setPreferredSize(new Dimension(100,100));
        panelSouth.add(SuchButton);
        
        panelEast.setPreferredSize(new Dimension(50,50));
        panelWest.setPreferredSize(new Dimension(50,50));
        AuswahlCheckBox.setPreferredSize(new Dimension(100,100));
        
        SuchButton.addActionListener(this);
        
        
        
        Auswahldatenbank.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Auswahldatenbank.setLayout(null);
        Auswahldatenbank.setSize(500,500);
        Auswahldatenbank.setLayout(new BorderLayout());
        Auswahldatenbank.setVisible(true);
        Auswahldatenbank.add(AuswahlCheckBox,BorderLayout.CENTER);
        Auswahldatenbank.add(panelNorth, BorderLayout.NORTH);
        Auswahldatenbank.add(panelEast, BorderLayout.EAST);
        Auswahldatenbank.add(panelWest, BorderLayout.WEST);
        Auswahldatenbank.add(panelSouth, BorderLayout.SOUTH);
        
        AuswahlCheckBox.add(checkBoxat1);
        AuswahlCheckBox.add(checkBoxat2);
        AuswahlCheckBox.add(checkBoxat3);
        AuswahlCheckBox.add(checkBoxat4);
        AuswahlCheckBox.add(checkBoxat5);
        AuswahlCheckBox.add(checkBoxat6);
        AuswahlCheckBox.add(checkBoxat7);
        AuswahlCheckBox.add(checkBoxat8);
        AuswahlCheckBox.add(checkBoxat9);
        AuswahlCheckBox.add(checkBoxat10);
        
        
        
        
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==SuchButton);{
            if (checkBoxat1.isSelected()) {
                attribut1 = "Tabellen name";// in die Klammer kommt das SQL statement
                System.out.println(attribut1);
                
            if (checkBoxat2.isSelected()) {
                    System.out.println(attribut2);
            }
            
            if (checkBoxat3.isSelected()) {
                    System.out.println(attribut3);
            }
            if (checkBoxat4.isSelected()) {
                    System.out.println(attribut4);
            }
            if (checkBoxat5.isSelected()) {
                    System.out.println(attribut5);
                
            }
            if (checkBoxat6.isSelected()) {
                    System.out.println(attribut6);
            
            }
            if (checkBoxat7.isSelected()) {
                    System.out.println(attribut7);
            
            }
            if (checkBoxat8.isSelected()) {
                    System.out.println(attribut8);
            }
            if (checkBoxat9.isSelected()) {
                    System.out.println(attribut9);
            }
            if (checkBoxat10.isSelected()) {
                    System.out.println(attribut10);
                
            }
            
    
            
        }


    
    
    }
        
    }   

    
}
 

mihe7

Top Contributor
Du müsstest den Use Case ein bisschen näher beschreiben. Der Anwender klickt Checkboxen an. Wofür stehen die Checkboxen, wo kommen die Inhalte her und was soll mit der Auswahl des Anwenders passieren?
 

KonradN

Super-Moderator
Mitarbeiter
Also bezüglich des Codes von Dir:

String attribut1 = new String("Attribut 1");
Bitte niemals so einen Müll erzeugen! Sorry, für die harten Worte. "Attribut 1" ist bereits ein String (zur Laufzeit, im Code ist es natürlich ein String Literal).

Ein
String attribut1 = "Attribut 1";
reicht aus!

Warum ist Dein Code "Müll"? Bei Dir wird zum einen der String aus dem String Literal erzeugt und auf einer internen Liste von Strings gelegt (String.intern() Dokumentation lesen für mehr Details!)
Davon erzeugst Du noch eine neue String Instanz. Damit hast Du zwei String Instanzen, die sich gleichen.


Zu Deinem eigentlichen Problem: Was genau willst Du denn machen? Wenn Du ein SQL Statement zusammen bauen willst, dann kannst Du natürlich das alles programmatisch machen. Dazu kannst Du die Checkboxen / Werte z.B. in Arrays packen (macht aber ggf. mehr Sinn, das in einer Klasse zu haben).

Dann kannst Du eine Liste der Attribute erstellen, indem Du in einer Schleife die Checkboxen durchgehst (sind ja in einem Array und damit mit einer Schleife durchlaufbar) und wenn die Checkbox ausgewählt wurde, dann kannst Du da einen Wert zu der Liste hinzu fügen. Die Liste lässt sich dann in einem String zusammen setzen, so dass Du z.B. eine Komma getrennte Liste von Feldern hast.

Du kannst aber auch hin gehen und das alles etwas vereinfachen. Du fragst einfach alle Felder ab. Die Auswahl beeinflusst dann nur die Anzeige der Werte. So es nicht um sehr viele Felder bzw. sehr viele Datensäte geht, so ist das auch recht gut. Und das hat den Vorteil, dass man dann besser auf Libraries zurückgreifen kann. (Dann hast Du eine Datenklasse für die Daten aus der Tabelle und liest einfach die Liste ein in eine List<YourEntityClass> (was z.B. mit Hibernate und Co sehr gut geht) und machst dann nur die Anzeige...
 

Neumi5694

Top Contributor
Ich würde dir für dein Problem, grundsätzlich mal folgendes raten:
Sammle die Attribute in einer Liste. System.out ist zu nichts mehr gut, als irgendwas auf dem Bildschirm auszugeben. Es ist niemals eine gute Idee, Logik ("ist die Checkbox ausgewählt?") mit Ausabe zu verbinden.
Also:
Java:
List<String> selectedAttributeNames = new ArrayList<>();
if (jchkboxSchlagmichtot.isSelected()) {
    selectedAttributeNames.add("dddd");
}
...
So kannst du im Anschluss dann was sinnvolles damit machen.


Aber da hast du 1. mal viel redundanten Code und 2. Daten und Logik zu einem bestimmten Grad immer noch gemischt.
Trennen wir das Ganze also mal
Code:
//Datenanlage ganz am Anfang, die Variable ist eine Instanzvariable der Klasse, wird im Konstruktor befüllt, bzw. dort, wo du die Checkboxen erstellst.
Map<AbstractButton, String> assignedAttributeNames = new HashMap<>();

assignedAttributeNames.put(box1, "Attribut1");
assignedAttributeNames.put(box2, "Attribut2");
...
//Man könnte hier wohl auch das ActionCommand der Box nutzen und die Boxen dann einfach in einer Liste speichern, aber das ist mir persönlich zuwider, hab lieber eine gut lesbare Zuweisung in einer Map.


//und nun zur Auswertung
List<String> selectedAttributeNames = new ArrayList<>();
assignedAttributeNames.forEach((box, attributeName) -> {
  if(box.isSelected()) {
     selectedAttributeNames.add(attributeName);
  }
});
//das ginge natürlich auch über Stream, Filter, Mapper und Collector, aber wir wollen mal nicht so sein.
 

Ickenichdu

Mitglied
Hey vielen Dank euch für den guten Input. Ich muss mich entschuldigen für meine Fehler, ich arbeite mit einem Online Javakurs und das was ich mir so aus Foren zusammenstelle. Ich lasse es euch wissen wenn es geklappt hat.
 

Neumi5694

Top Contributor
Hey vielen Dank euch für den guten Input. Ich muss mich entschuldigen für meine Fehler, ich arbeite mit einem Online Javakurs und das was ich mir so aus Foren zusammenstelle. Ich lasse es euch wissen wenn es geklappt hat.
Nichts zu entschuldigen. Dafür lernt man ja. Algorithmen zu programmieren ist der einfache Teil. Ein Programm so zu schreiben, dass man es zwei Jahre später noch versteht und/oder mit möglichst wenig Aufwand ändern oder trennen kann, dafür gibt es die ganzen Vorgaben, an die man sich halten kann oder sollte.

Wichtigster Punkt (Meiner Meinung nach): Eingabe, Berechnung (bzw. Ergebnisse sammeln) und Ausgabe und trennen. Wenn man das hat, dann ist schon ein wichtiger Punkt geschafft. In einer Berechnungsschleife Ausgaben am Bildschirm zu machen, ist bestenfalls zum Debuggen gut.
 

Ickenichdu

Mitglied
Hey Leute es hat geklappt vielen Dank euch =)
Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Auswahlfenster<AbstractButton> implements ActionListener {

    
    
    JFrame Auswahldatenbank = new JFrame();
    JPanel AuswahlCheckBox = new JPanel();
    JButton SuchButton = new JButton("Suchen");
    List<String> selectedAttributeNames = new ArrayList<>();
    
    
    
    JCheckBox checkBoxat1 = new JCheckBox("Attribut 1");
    JCheckBox checkBoxat2 = new JCheckBox("Attribut 2");
    JCheckBox checkBoxat3 = new JCheckBox("Attribut 3");
    JCheckBox checkBoxat4 = new JCheckBox("Attribut 4");
    JCheckBox checkBoxat5 = new JCheckBox("Attribut 5");
    JCheckBox checkBoxat6 = new JCheckBox("Attribut 6");
    JCheckBox checkBoxat7 = new JCheckBox("Attribut 7");
    JCheckBox checkBoxat8 = new JCheckBox("Attribut 8");
    JCheckBox checkBoxat9 = new JCheckBox("Attribut 9");
    JCheckBox checkBoxat10 = new JCheckBox("Attribut 10");
    
    String attribut1 = ("Attribut 1");
    String attribut2 = ("Attribut 2");
    String attribut3 = ("Attribut 3");
    String attribut4 = ("Attribut 4");
    String attribut5 = ("Attribut 5");
    String attribut6 = ("Attribut 6");
    String attribut7 = ("Attribut 7");
    String attribut8 = ("Attribut 8");
    String attribut9 = ("Attribut 9");
    String attribut10 = ("Attribut 10");
    
    
    
    
    
    
    Auswahlfenster(){
        
        JPanel panelNorth = new JPanel();
        JPanel panelSouth = new JPanel();
        JPanel panelWest = new JPanel();
        JPanel panelEast = new JPanel();
        
        panelNorth.setPreferredSize(new Dimension(100,100));
        
        
        panelSouth.setPreferredSize(new Dimension(100,100));
        panelSouth.add(SuchButton);
        
        panelEast.setPreferredSize(new Dimension(50,50));
        panelWest.setPreferredSize(new Dimension(50,50));
        AuswahlCheckBox.setPreferredSize(new Dimension(100,100));
        
        SuchButton.addActionListener(this);
        
        
        
        Auswahldatenbank.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Auswahldatenbank.setLayout(null);
        Auswahldatenbank.setSize(500,500);
        Auswahldatenbank.setLayout(new BorderLayout());
        Auswahldatenbank.setVisible(true);
        Auswahldatenbank.add(AuswahlCheckBox,BorderLayout.CENTER);
        Auswahldatenbank.add(panelNorth, BorderLayout.NORTH);
        Auswahldatenbank.add(panelEast, BorderLayout.EAST);
        Auswahldatenbank.add(panelWest, BorderLayout.WEST);
        Auswahldatenbank.add(panelSouth, BorderLayout.SOUTH);
        
        AuswahlCheckBox.add(checkBoxat1);
        AuswahlCheckBox.add(checkBoxat2);
        AuswahlCheckBox.add(checkBoxat3);
        AuswahlCheckBox.add(checkBoxat4);
        AuswahlCheckBox.add(checkBoxat5);
        AuswahlCheckBox.add(checkBoxat6);
        AuswahlCheckBox.add(checkBoxat7);
        AuswahlCheckBox.add(checkBoxat8);
        AuswahlCheckBox.add(checkBoxat9);
        AuswahlCheckBox.add(checkBoxat10);
        
        
        
        
    }
    
    


    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==SuchButton);{
            if (checkBoxat1.isSelected()) {
                selectedAttributeNames.add(attribut1);
                
            if (checkBoxat2.isSelected()) {
                selectedAttributeNames.add(attribut2);
                
            }
            if (checkBoxat3.isSelected()) {
                selectedAttributeNames.add(attribut3);
            }
            if (checkBoxat4.isSelected()) {
                selectedAttributeNames.add(attribut4);
                
            }
            if (checkBoxat5.isSelected()) {
                selectedAttributeNames.add(attribut5);
                
            }
            if (checkBoxat6.isSelected()) {
                selectedAttributeNames.add(attribut6);
            }
            if (checkBoxat7.isSelected()) {
                selectedAttributeNames.add(attribut7);
                
            }
            if (checkBoxat8.isSelected()) {
                selectedAttributeNames.add(attribut8);
                
            }
            if (checkBoxat9.isSelected()) {
                selectedAttributeNames.add(attribut9);
            }
            if (checkBoxat10.isSelected()) {
                selectedAttributeNames.add(attribut10);
            }
            
    
            
        }else {
            System.out.println("Bitte Wählen sie eine Tabelle aus!");
        }
            System.out.println(selectedAttributeNames);
            
    }
        
        
        
    }   

    
}
 

mihe7

Top Contributor
Das kann man auch mit Arrays/Collections lösen, hier mal ein paar kleine Anmerkungen
Java:
public class Auswahlfenster implements ActionListener { // unnützen Typparameter entfernt

    JFrame auswahldatenbank = new JFrame();     // Bezeichner in lowerCamelCase
    JPanel auswahlCheckBox = new JPanel();      // Bezeichner in lowerCamelCase
    JButton suchButton = new JButton("Suchen"); // Bezeichner in lowerCamelCase
    List<String> selectedAttributeNames = new ArrayList<>();
    
    JCheckBox[] checkBoxen; // Checkboxen in ein Array
    String[] attribute;     // Attribute in ein Array;
    
    Auswahlfenster(){
    
        attribute = new String[10];
        for (int i = 0; i < attribute.length; i++) {
            attribute[i] = "Attribut" + (i+1);
        }
                
        JPanel panelNorth = new JPanel();
        JPanel panelSouth = new JPanel();
        JPanel panelWest = new JPanel();
        JPanel panelEast = new JPanel();
        
        panelNorth.setPreferredSize(new Dimension(100,100));
        
        
        panelSouth.setPreferredSize(new Dimension(100,100));
        panelSouth.add(suchButton);
        
        panelEast.setPreferredSize(new Dimension(50,50));
        panelWest.setPreferredSize(new Dimension(50,50));
        auswahlCheckBox.setPreferredSize(new Dimension(100,100));
        
        suchButton.addActionListener(this);
        
                
        auswahldatenbank.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//        auswahldatenbank.setLayout(null); // sinnloser Aufruf, wird zwei Zeilen weiter überschrieben
        auswahldatenbank.setSize(500,500);
        auswahldatenbank.setLayout(new BorderLayout());
//        auswahldatenbank.setVisible(true);  // setVisible IMMER am Schluss aufrufen
        auswahldatenbank.add(auswahlCheckBox,BorderLayout.CENTER);
        auswahldatenbank.add(panelNorth, BorderLayout.NORTH);
        auswahldatenbank.add(panelEast, BorderLayout.EAST);
        auswahldatenbank.add(panelWest, BorderLayout.WEST);
        auswahldatenbank.add(panelSouth, BorderLayout.SOUTH);
        
        checkBoxen = new JCheckBox[attribute.length];  // durch Array ersetzt.
        for (int i = 0; i < checkBoxen.length; i++) {
            checkBoxen[i] = new JCheckBox(attribute[i]);
            auswahlCheckBox.add(checkBoxen[i]);
        }
        
        auswahldatenbank.setVisible(true);        
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==suchButton) { // Semikolon entfernt
            selectedAttributeNames.clear(); // zuvor gewählte Attribute entfernen
            for (int i = 0; i < checkBoxen.length; i++) {  // jetzt via Array
                if (checkBoxen[i].isSelected()) {
                    selectedAttributeNames.add(attribute[i]);
                }
            }
        } else {
            System.out.println("Bitte Wählen sie eine Tabelle aus!");
        }
        System.out.println(selectedAttributeNames);            
    }
}
 

Ickenichdu

Mitglied
Hey Leute ich muss euch ein weiteres Mal um Hilfe bitten.

ich habe es jetzt geschafft, die Attribute welche für die Namen der Tabels meiner SQL Datenbank stehen auszuwählen und einer query zu speichern und ein Statement zu erzeugen. Nun ist mir allerdings aufgefallen, dass ich bei der Ausgabe querys
"SELECT * FROM [attribut1, attribut5, attribut10]"

die harten Klammern dabei habe, welche einen Syntax Fehler für meine Abfrage darstellen. Gibt es eine Möglichkeit diese zu entfernen bi der Ausgabe?.
 

mihe7

Top Contributor
Java:
String[] attribute = { "attribut1", "attribut5", "attribut7" };
System.out.println(Stream.of(attribute).collect(Collectors.joining(",")));
liefert
Code:
attribut1,attribut5,attribut7
 

Neumi5694

Top Contributor
Wobei ich dringend empfehlen möchte, die Abfrage gegen injection oder geschützte Begriffe abzusichern.
In MS Access würde man z.B. so was schreiben "select [att1], [att2], [att3] from ..."
Damit ist sichergestellt, dass der String, der von außen reingeschickt wurde auch tatsächlich als Name einer Spalte behandelt und nicht ausgewertet wird.
 

Ickenichdu

Mitglied
String[] attribute = { "attribut1", "attribut5", "attribut7" }; System.out.println(Stream.of(attribute).collect(Collectors.joining(",")));
Das funktioniert jetzt aber nur mit der Ausgabe attribut1, attribut5, attribut7. Ich brauche das aber abhängig von den ausgewählten. Also wenn wenn attribut 1,2,3 ausgewählt dann soll die Ausgabe sein "attribut1,attribut3,attribut3" und bei der Auswahl von bsp.: attribut5 und attribut9 soll die Ausgabe: "attribut5,attribut9" sein.
 

KonradN

Super-Moderator
Mitarbeiter
Das funktioniert jetzt aber nur mit der Ausgabe attribut1, attribut5, attribut7. Ich brauche das aber abhängig von den ausgewählten. Also wenn wenn attribut 1,2,3 ausgewählt dann soll die Ausgabe sein "attribut1,attribut3,attribut3" und bei der Auswahl von bsp.: attribut5 und attribut9 soll die Ausgabe: "attribut5,attribut9" sein.
Dir werden Bausteine gezeigt. Diese kannst Du dann in dein bestehenden Code einbauen. Dazu ist es wichtig, dass Du verstehst, was da gemacht wird.

So baust Du doch in dem gezeigten Code selectedAttributes auf und das kannst Du doch nutzen um die Liste zu erstellen.
 

Ickenichdu

Mitglied
Ich hab es hinbekommen Mit
Java:
 List<String> attribute = selectedAttributeNames;
        System.out.println("SELCTED * FROM " + String.join(",",attribute) + ";");
 

Ickenichdu

Mitglied
Der Code funktioniert jetzt soweit. lediglich die kriege ich nur noch folgendem F
Java:
Statement.executeQuery() cannot issue statements that do not produce result sets.
ehler
 

Ickenichdu

Mitglied
Code:
public class Auswahlfenster implements ActionListener { // unnützen Typparameter entfernt

    JFrame auswahldatenbank = new JFrame();     // Bezeichner in lowerCamelCase
    JPanel auswahlCheckBox = new JPanel();      // Bezeichner in lowerCamelCase
    JButton suchButton = new JButton("Suchen"); // Bezeichner in lowerCamelCase
    List<String> selectedAttributeNames = new ArrayList<>();
    
    String url = "jdbc:mysql://localhost:3306/testtable?";
    String user = "Vinzenz";
    String password = "11ccffe1b5";
    
    JCheckBox[] checkBoxen; // Checkboxen in ein Array
    String[] attribute;     // Attribute in ein Array;
    
    Auswahlfenster(){
    
        attribute = new String[10];
        for (int i = 0; i < attribute.length; i++) {
            attribute[i] = "Attribut" + (i+1);
        }
                
        JPanel panelNorth = new JPanel();
        JPanel panelSouth = new JPanel();
        JPanel panelWest = new JPanel();
        JPanel panelEast = new JPanel();
        
        panelNorth.setPreferredSize(new Dimension(100,100));
        
        
        panelSouth.setPreferredSize(new Dimension(100,100));
        panelSouth.add(suchButton);
        
        panelEast.setPreferredSize(new Dimension(50,50));
        panelWest.setPreferredSize(new Dimension(50,50));
        auswahlCheckBox.setPreferredSize(new Dimension(100,100));
        
        suchButton.addActionListener(this);
        
                
        auswahldatenbank.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//        auswahldatenbank.setLayout(null); // sinnloser Aufruf, wird zwei Zeilen weiter überschrieben
        auswahldatenbank.setSize(500,500);
        auswahldatenbank.setLayout(new BorderLayout());
//        auswahldatenbank.setVisible(true);  // setVisible IMMER am Schluss aufrufen
        auswahldatenbank.add(auswahlCheckBox,BorderLayout.CENTER);
        auswahldatenbank.add(panelNorth, BorderLayout.NORTH);
        auswahldatenbank.add(panelEast, BorderLayout.EAST);
        auswahldatenbank.add(panelWest, BorderLayout.WEST);
        auswahldatenbank.add(panelSouth, BorderLayout.SOUTH);
        
        checkBoxen = new JCheckBox[attribute.length];  // durch Array ersetzt.
        for (int i = 0; i < checkBoxen.length; i++) {
            checkBoxen[i] = new JCheckBox(attribute[i]);
            auswahlCheckBox.add(checkBoxen[i]);
        }
        
        auswahldatenbank.setVisible(true);       
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==suchButton) { // Semikolon entfernt
            selectedAttributeNames.clear(); // zuvor gewählte Attribute entfernen
            for (int i = 0; i < checkBoxen.length; i++) {  // jetzt via Array
                if (checkBoxen[i].isSelected()) {
                    selectedAttributeNames.add(attribute[i]);
                }
            }
        } else {
            System.out.println("Bitte Wählen sie eine Tabelle aus!");
        }
        System.out.println(selectedAttributeNames); 
        List<String> attribute = selectedAttributeNames;
        
        try(Connection conn = DriverManager.getConnection(url, user, password)){
            
            System.out.println("Die Verbindung zur Datenbank steht!");
            
            
            // ausgeben
            
            String query = "SELCTED *" + String.join(",",attribute) + ";";
            
            System.out.println(query);
            
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            
            int columns = rs.getMetaData().getColumnCount();
            for(int s = 1; s<=columns; s++)
                System.out.print(String.format("%-25s", rs.getMetaData().getColumnLabel(s)));
            
            System.out.println();
            System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
            
            while(rs.next()) {
                for(int s = 1; s<=columns; s++)
                    System.out.print(String.format("%-25s", rs.getString(s)));
                System.out.println();
            }
            
            rs.close();
            stmt.close();
            
        }catch(SQLException ex) {
            
            System.err.println(ex.getMessage());
        
    }
}
}
 

KonradN

Super-Moderator
Mitarbeiter
Die Attribute stellen in diesem Fall die Tabellennamen dar.
Das ist aber dann auch recht bedenklich. Wenn du mehrere Tabellen so selektierst, und die Tabellen haben n1, n2, ... ni Elemente, dann erhältst Du eine Zielmenge mit n1*n2*n3*....*ni Elementen.

Das ist also auch nicht unbedingt sinnvoll und man sollte das Design noch etwas überdenken.
 

KonradN

Super-Moderator
Mitarbeiter
Dein SQL Statement ist auch nicht gültig:
String query = "SELCTED *" + String.join(",",attribute) + ";";

Das SELCTED ist kein SQL Befehl. SELECT soll es wohl heißen. Und nach dem * sollte dann vermutlich ein FROM kommen ...
 

Ickenichdu

Mitglied
Dein SQL Statement ist auch nicht gültig:
String query = "SELCTED *" + String.join(",",attribute) + ";";

Das SELCTED ist kein SQL Befehl. SELECT soll es wohl heißen. Und nach dem * sollte dann vermutlich ein FROM kommen ...
ahh ich trottel. ;)

jetzt funktioniert alles

vielen dank für die Hilfe.

Was die Tabellennahmen angeht werde ich die noch ändern sobald diese feststehen und die Daten in die SQL eingespeist wurden. Für den Augenblick ging es mir erstmal nur um die Schnittstelle zwischen Programm und SQL.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A nur einen Wert aus einer .conf lesen und erneuern Allgemeine Java-Themen 3
N Applet Apache Poi Wert einer Formel ausgeben Allgemeine Java-Themen 5
J in einer static Variable Wert ändern Allgemeine Java-Themen 6
R Wert von einer Klasse in eine andere bekommen Allgemeine Java-Themen 6
J variablen wert ändernung mit einer art actionlistener? Allgemeine Java-Themen 4
H Zugriff auf Wert einer Umgebungsvariablen Allgemeine Java-Themen 2
J Wie kann man herausfinden, wo der Wert herkommt ? Allgemeine Java-Themen 13
JAnruVA Datentypen Berechneten String-Wert in Double umwandeln um weiter zu rechnen Allgemeine Java-Themen 7
T Verschachtelte For-Schleife gibt falschen Wert zurück, Abbruchbedingung evtl. falsch? Allgemeine Java-Themen 9
L 2 Dimensionale ListArray Abfrage nach einem Wert suchen Allgemeine Java-Themen 5
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
S Wert zuweisung Allgemeine Java-Themen 1
Alex_99 Rechner: Wert zwischenspeichern und bei Bedarf mit Ihm weiterrechnen? Allgemeine Java-Themen 6
J Wo kommt der Wert der Variable her ? Allgemeine Java-Themen 6
Tiago1234 CellReference cr = new CellReference("") gibt den falschen Wert zurück Allgemeine Java-Themen 49
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
L String zu repräsentativen Wert Allgemeine Java-Themen 0
S Drools: Zählen wie oft ein Wert vorkommt Allgemeine Java-Themen 1
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
T Wert an laufenden Java-Prozess übergeben Allgemeine Java-Themen 10
A Variablen Funktion übergibt den Wert nicht Allgemeine Java-Themen 13
P JSpinner gibt leeren Wert zurück Allgemeine Java-Themen 5
KeexZDeveoper Nächstgelegenden Wert ermitteln Allgemeine Java-Themen 5
C Variablen Variablen mit unendlichem Wert Allgemeine Java-Themen 22
G Iteratoren - Wie kann man mithilfe von Iteratoren nur jeden zweiten Wert eines TreeSets ausgeben? Allgemeine Java-Themen 4
A Mit dem letzten bis zum ersten Wert aus Array rechnen Allgemeine Java-Themen 15
T Array - Wert am nächsten zur vollen Sekunde Allgemeine Java-Themen 20
F Wert in Variable schreiben, wenn diese gerade genutzt wird Allgemeine Java-Themen 10
G Methoden BMI -Wert Aufgabe(Methoden) Allgemeine Java-Themen 4
F Wert ändert sich nicht Allgemeine Java-Themen 12
E JavaFX String-Wert geht "verloren" - ratlos Allgemeine Java-Themen 2
A In Excel-Datei schreiben, Formeln der Mappe anwenden, Wert lesen Allgemeine Java-Themen 3
R Int Wert im Dialogfeld ändern Allgemeine Java-Themen 4
B [Android] EditText-Object ist null - Nimmt nicht den Wert des enthaltenen Textfeldes ein Allgemeine Java-Themen 2
O log4j, Problem bei Ausgabe null-Wert Allgemeine Java-Themen 0
H Bestimmten Wert aus String parsen Allgemeine Java-Themen 7
M HashMaps: Wert erweitern Allgemeine Java-Themen 3
C Object.equals() liefert falschen Wert? Allgemeine Java-Themen 14
M Parallele Programmierung: volatile Variable nimmt ungewöhnlichen Wert an Allgemeine Java-Themen 3
T Datentypen ArrayUtils.indexOf( ... ) liefert -1 obwohl Wert scheinbar enthalten ist Allgemeine Java-Themen 15
H Speziellen Wert aus String filtern Allgemeine Java-Themen 4
M JExcel Wert aus Zelle übergeben/ausgeben Allgemeine Java-Themen 2
iB0T Variable Wert ausrauchen Allgemeine Java-Themen 3
iB0T "goto" Befehl aus Batch in Java und Variablen wert immer wieder neu setzen Allgemeine Java-Themen 4
G Z Wert - 3 Dimensionaler Punkt Allgemeine Java-Themen 13
S JPA und Entity-Klassen: Wert ungültig Allgemeine Java-Themen 6
C .Ini-Datei Wert Änderungen werden nicht angenommen Allgemeine Java-Themen 3
J String mit "," in Double Wert konvertieren Allgemeine Java-Themen 7
I getResponseCode(); returnt einen falschen Wert? Allgemeine Java-Themen 7
G Input/Output Manuelle Änderung von Wert in Swing Komponente bemerken! Allgemeine Java-Themen 2
S Newton-Verfahren liefert nur 1 Wert Allgemeine Java-Themen 3
E Wert von enum zur Laufzeit festlegen. Allgemeine Java-Themen 5
E Wert in andere Klasse übernehmen Allgemeine Java-Themen 4
X this.val$WERT Was ist den das? Allgemeine Java-Themen 2
K Scanner - große Textfile, nur 0 ab betim. Wert Allgemeine Java-Themen 4
S Daten in Array als INT-Wert einlesen - jetzt als csv Datei Allgemeine Java-Themen 5
T OLE-Automation mit Excel (Wert übergabe) Allgemeine Java-Themen 1
Benji0815 Wert in GUI aktualisieren, Beobachter Allgemeine Java-Themen 9
O Hash Wert von Passwörter erstellen (SHA) Allgemeine Java-Themen 9
G Double Wert über OutputStream verschicken Allgemeine Java-Themen 2
S Methode übergibt immer den gleichen Wert Allgemeine Java-Themen 21
J Was ist schneller? Neue Variable oder neuer Wert speziell int Allgemeine Java-Themen 3
M Bit Wert umdrehen Allgemeine Java-Themen 5
J ArrayList aus Point-Objekten nach dem x-Wert ordnen Allgemeine Java-Themen 2
B Wert mit Adresse auslesen Allgemeine Java-Themen 11
S Array: Anzahl Elemente mit best. Wert zählen Allgemeine Java-Themen 4
M Ein Array-Wert soll sich verändern, aber 2 tun es? Allgemeine Java-Themen 7
S Prüfen auf Hex-Wert fester Länge! Allgemeine Java-Themen 5
G transientes Objekt mit Wert initialisieren? Allgemeine Java-Themen 7
reibi double-Wert auf 2 Stellen nach dem Komma abschneiden Allgemeine Java-Themen 6
S CRC wert berechnen ergibt 0 ? Allgemeine Java-Themen 9
MQue Float- Wert formatieren Allgemeine Java-Themen 8
A Private-Wert eines Objekts auslesen Allgemeine Java-Themen 9
J Integer Array Wert vorhanden? Allgemeine Java-Themen 6
N Wert in ArrayList ändert sich ohne wissentliches zutun Allgemeine Java-Themen 6
O System.nanoTime() einheitlichen Wert auf mehreren Rechnern? Allgemeine Java-Themen 9
H JTable Wert verändern Allgemeine Java-Themen 3
S den zweit niedrigsten wert in einem array berechnen Allgemeine Java-Themen 2
J Vector - Wert ersetzen Allgemeine Java-Themen 14
H JSF - Wert an ein managed bean übergeben Allgemeine Java-Themen 2
H boolean wert ändern Allgemeine Java-Themen 2
R Wert in Hashtable ändern (Key ändern, Value bleibt) Allgemeine Java-Themen 3
G Wandeln von Char Wert in Zeichen? Allgemeine Java-Themen 2
B Java Klasse muß in Terminal einen Wert zurückgeben. Allgemeine Java-Themen 3
R ascii-wert zuweisung Allgemeine Java-Themen 4
B Wert zuweisen bei deklaration? Allgemeine Java-Themen 9
C ImageIO die read-Methode liefert mir ein null- Wert zurück Allgemeine Java-Themen 10
A Float-Wert auf 2 Stellen nach den Komma runden ? Allgemeine Java-Themen 2
B Double-Wert aus einem HexString erstellen. Allgemeine Java-Themen 11
B Wie bekomme ich den Wert aus der For-Schleife? Allgemeine Java-Themen 5
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
T JNA, Aufruf der Funktionen einer dll Allgemeine Java-Themen 5
I Vom Monolith zu Services in einer Webseite Allgemeine Java-Themen 1
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
O Werte einer Generic LinkedList zusammenrechenen Allgemeine Java-Themen 14
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben