Announcement

Collapse
No announcement yet.

Werte aus SQL Datenbank holen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Werte aus SQL Datenbank holen

    so ich habe nun eine SQL Datenbank mit zwei Tabellen und aus einer möchte ihc nun alle Daten holen.

    Die Tabelle besteht aus mehreren Spalten wie Name, Datum, Betrag usw mit den entsprechenden Datentypen (int, char, float usw).

    Selbst wenn ich jetzt den Sql Befehle "Select * from Tabelle" ausführen lasse, sind nur die Daten aus der ersten Spalte dran.

    Was ist hier der beste Weg, um die Daten von allen Spalten zu holen? Array, verschiedene Variablen?

    Es wurde ja schon gesagt, dass mit Hilfe der JTAble bzw dem TableModel die Daten geholt werden, aber wie sieht der SQL Befehl und die VErarbeitung aus, um die Daten dann dort unterzubringen..... `?


    Danke

  • #2
    Selbst wenn ich jetzt den Sql Befehle "Select * from Tabelle" ausführen lasse, sind nur die Daten aus der ersten Spalte dran.
    Wie sieht der Code dazu aus?
    Christian

    Comment


    • #3
      Code:
      public String fillTextfeld()
              {
              String result=null;
              if(connection==null)
                  {
                  System.out.println("Abfrage nicht möglich, Connection ist null");
                  return result;
                  }
              try
                  {
                  Statement statement=connection.createStatement();
                  ResultSet resultSet=statement.executeQuery("SELECT Spalte FROM tabellenname");
                  while(resultSet.next())
                      {
                      result=(result+resultSet.getString(1));
                      System.out.println(result);
                      }
                  resultSet.close();
                  statement.close();
                  }
              catch(SQLException ex)
                  {
                  System.out.println("SQL-Exception bei der Abfrage: "+ex.getMessage());
                  }
              return result;
              }
      Die Tabelle besteht aber aus ner Spalte für id, name, betrag, datum, versand usw.....!

      Comment


      • #4
        SELECT Spalte FROM tabellenname
        Wenn du nur eine Spalte holst, wird auch nur eine da sein
        Des Weiteren habe ich dir empfohlen, eine neue Methode zu nehmen um eine Tabelle zu füllen, die auch das Model als Parameter übernimmt
        Christian

        Comment


        • #5
          Ja mit einer Spalte habe ich keine Problem an sich - nur eben die Daten von allen Spalten zu holen und in das TableModel zu geben........ ich weiß nicht wie ich die SQL Abfrage stellen sollte - ein Select * from Tabelle liefert auch nur die erste Spalte....!

          Wenn ich den Befehl Select * from Tabelle in der Eingabeaufforderung eingebe, dann erscheitn eben die komplette Tabelle............ in der Variablen unter Java steht dann nur die erste Spalte drin... ich probier das natürlich schon aus! ;-)

          Also evtl muss ich dann die einzelnen Spalten angeben oder? Zb so
          Select Tabellennamen.spaltennamen1, Tabellennamen.spaltennamen2, usw ? Das kommt mir noch aus nem Buch bekannt vor, dass sowas da drin stand!

          Comment


          • #6
            Select * from Tabelle liefert auch nur die erste Spalte.
            Woher weisst du das, wenn du es nicht programmiert hast? Wie wäre es, du fängst an die die Methode zu schreiben um eine Tabelle auszulesen....
            Christian

            Comment


            • #7
              Originally posted by Christian Marquardt View Post
              Woher weisst du das, wenn du es nicht programmiert hast? Wie wäre es, du fängst an die die Methode zu schreiben um eine Tabelle auszulesen....
              Naja das hab ich ausprobiert! Wenn ich Select * from Tabelle als Befehl habe und mir das als result anzeigen lasse dann kommt nur das was in der ersten Spalte steht....!

              Ja die Methode probier ich ja und weiß nicht wo ich da ansetzen sollte.... weil ich die SQL Abfrage nicht hinbekomm.... auch mit Tabellennamen.spaltennamen1, usw wird immer nur die erste Spalte angezeigt!

              ok das sagt wohl aus, dass es nicht an der Abfrage sondern an der Ausgabe liegt....... ok also brauch ich die passende Ausgabe/Verarbeitung der SQL Abfrage...!

              Comment


              • #8
                Code:
                public void fillTable(DefaultTableModel defaultTableModel)
                {
                if(connection==null)
                {
                System.out.println("Abfrage nicht möglich, Connection ist null");
                return;
                }
                try
                {
                Statement statement=connection.createStatement();
                ResultSet resultSet=statement.executeQuery("SELECT * from........");
                while(resultSet.next())
                {
                System.out.println(resultSet.getString(1));
                System.out.println(resultSet.getString(2));
                }
                resultSet.close();
                statement.close();
                }
                catch(SQLException ex)
                {
                System.out.println("SQL-Exception bei der Abfrage: "+ex.getMessage());
                }
                }
                Zeile 14,15 ist die Methode get.... anzupassen, je nachdem was für ein Typ in den Spalten deiner Tabelle ist. Das weiss ich nicht. Weiterhin ist für jede Spalte ein get... zu machen

                WENN obiges funktioniert (Ausgabe in die Konsole), ist der nächste Schritt die Übergabe in die Tabelle
                Zuletzt editiert von Christian Marquardt; 09.08.2020, 15:42.
                Christian

                Comment


                • #9
                  Oh ok ja das lag eigentlich auf der Hand....! :-)
                  Zuletzt editiert von Einklang.; 07.06.2012, 03:41.

                  Comment


                  • #10
                    Füllen der Tabelle
                    Code:
                    if(connection==null)
                    {
                    System.out.println("Abfrage nicht möglich, Connection ist null");
                    return;
                    }
                    try
                    {
                    Statement statement=connection.createStatement();
                    ResultSet resultSet=statement.executeQuery("SELECT * from........");
                    defaultTableModel.setRowCount(0);
                    while(resultSet.next())
                    {
                    defaultTableModel.addRow(new Object[]
                    {
                    resultSet.getString(1),resultSet.getString(2)..... ..
                    });
                    }
                    resultSet.close();
                    statement.close();
                    }
                    catch(SQLException ex)
                    {
                    System.out.println("SQL-Exception bei der Abfrage: "+ex.getMessage());
                    }
                    }
                    Dabei müssen natürlich die in Spalte 15 gelesenen Datentypen mit den in der Tabelle definierten übereinstimmen
                    Zuletzt editiert von Christian Marquardt; 09.08.2020, 15:42.
                    Christian

                    Comment


                    • #11
                      Hm da wär ich selbst nie drauf gekommen.... vielleicht hätte ich mir aus Verzweiflung irgendwann die Api angesehen und dann den Zusatz addRow gesehen und dann irgendwann...!

                      ich habe mir jetzt die Erklärung von der Seite angesehen, wo das auch nicht direkt steht:
                      http://docs.oracle.com/javase/tutori...able.html#data

                      Die Daten werden bei den ganzen Beispielen immer nur programmiertechnisch gefüllt und nie von einer Datenbank gelesen...!
                      Muss ich da jetzt noch so ein Model mit Arrays/Feldern machen oder nicht?

                      Comment


                      • #12
                        Die Frage verstehe ich nicht. die Daten werden aus der DB gelesen und in das Model geschrieben. Wo sollte jetzt noch ein Array sein?

                        In deinem Link wird eine neue Modelklasse entworfen. Die wird hier nicht benötigt
                        Christian

                        Comment


                        • #13
                          Hm ok ich werd das testen wenn es funktioniert.

                          Habe das mal mit meinen Sachen erweitert und es kommt selbst mit nur einer Spalte eine Fehlermeldung:
                          Code:
                          defaultTableModel.addRow(new Object[] 
                                      			{
                                      			resultSet.getInt(1), resultSet.getString(2), resultSet.getInt(3), resultSet.getInt(4), resultSet.getInt(5), resultSet.getFloat(6), resultSet.getDate(7), resultSet.getFloat(8), resultSet.getInt(9),   
                                      			});
                                      	}
                          Die Fehlermeldung :
                          Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
                          at ButtonDBTablezweite.fillTextfeld(ButtonDBTablezwei te.java:72)
                          at ButtonDBTable.jButton1ActionPerformed(ButtonDBTabl e.java:95)
                          at ButtonDBTable.access$0(ButtonDBTable.java:93)
                          at ButtonDBTable$2.actionPerformed(ButtonDBTable.java :51)
                          at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source)
                          at javax.swing.AbstractButton$Handler.actionPerformed (Unknown Source)
                          at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source)
                          at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
                          at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Unknown Source)
                          at java.awt.Component.processMouseEvent(Unknown Source)
                          at javax.swing.JComponent.processMouseEvent(Unknown Source)
                          at java.awt.Component.processEvent(Unknown Source)
                          at java.awt.Container.processEvent(Unknown Source)
                          at java.awt.Component.dispatchEventImpl(Unknown Source)
                          at java.awt.Container.dispatchEventImpl(Unknown Source)
                          at java.awt.Component.dispatchEvent(Unknown Source)
                          at java.awt.LightweightDispatcher.retargetMouseEvent( Unknown Source)
                          at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source)
                          at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source)
                          at java.awt.Container.dispatchEventImpl(Unknown Source)
                          at java.awt.Window.dispatchEventImpl(Unknown Source)
                          at java.awt.Component.dispatchEvent(Unknown Source)
                          at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
                          at java.awt.EventQueue.access$000(Unknown Source)
                          at java.awt.EventQueue$3.run(Unknown Source)
                          at java.awt.EventQueue$3.run(Unknown Source)
                          at java.security.AccessController.doPrivileged(Native Method)
                          at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
                          at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
                          at java.awt.EventQueue$4.run(Unknown Source)
                          at java.awt.EventQueue$4.run(Unknown Source)
                          at java.security.AccessController.doPrivileged(Native Method)
                          at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
                          at java.awt.EventQueue.dispatchEvent(Unknown Source)
                          at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
                          at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
                          at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
                          at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
                          at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
                          at java.awt.EventDispatchThread.run(Unknown Source)

                          Comment


                          • #14
                            Wenn du nur 1 Spalte hast, warum füllst du dann mehr Daten?
                            at ButtonDBTablezweite.fillTextfeld(ButtonDBTablezwei te.java:72)
                            In dieser Zeile ist eine NullPointerException
                            Christian

                            Comment


                            • #15
                              Da sind mehr Spalten, nämlich 9 in der Tabelle - Zeile 72 ist der Befehl "defaultTableModel.setRowCount(0);

                              Comment

                              Working...
                              X