WinFuture-Forum.de: Mehrfach Zeilen bei Ausführung von Query - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Mehrfach Zeilen bei Ausführung von Query Java / MSSQL


#1 Mitglied ist offline   der dom 

  • Gruppe: aktive Mitglieder
  • Beiträge: 578
  • Beigetreten: 14. Juni 12
  • Reputation: 73
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Mein Haus, meine IT, Programmierung

geschrieben 02. Juli 2012 - 21:34

Hi,

ich habe hier ein kleines Problem bei der Erstellung von nem Java Prog (ist mein erstes). Normal programmiere ich in C# und .net.

Wenn ich die Query ausführe passiert folgendes:

Angehängtes Bild: progScreen.png

Hier mein Code:

 public void dbConnect(String db_connect_string,
            String db_userid,
            String db_password) throws ClassNotFoundException, SQLException
         {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection conn = DriverManager.getConnection(db_connect_string,
                    db_userid, db_password);
            System.out.println("connected");
            Statement statement = conn.createStatement();
            String queryString = "SELECT * FROM tbl_log";
            
            ResultSet rs = statement.executeQuery(queryString);
            
            String[] tableColumnsName = {"id","Action","Benutzer","Form","Datum","LogLevel"};
            DefaultTableModel modell = new DefaultTableModel();
            modell.setColumnIdentifiers(tableColumnsName);
            java.sql.ResultSetMetaData rsmd = rs.getMetaData();

            int colNo = rsmd.getColumnCount();
            while (rs.next()) {
                String append = rs.getString(1) + ", " + rs.getString(2) + "," + rs.getString(3)+ "," + rs.getString(4) + " ," +rs.getString(5);
                System.out.println(append);
                Object[] objects = new Object[colNo];
                for (int i = 0; i < colNo; i++)
                {
                objects[i] = rs.getObject(i + 1);
                modell.addRow(objects);
                }
            }
            jTable1.setModel(modell);
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }


Ich weiß nicht wo der Fehler liegt. Irritiert mich ein wenig.
Mit allem, was du tust, machst du offenkundig, mit welcher Einstellung du durch's Leben gehst. -- Steffen Glückselig
0

Anzeige



#2 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 02. Juli 2012 - 21:48

Ich hab jetzt keine Ahnung von Java und dergleichen aber der Fehler liegt doch scheinbar in der Schleife.

die Schleife läuft los und gibt den ersten Wert vom Datensatz aus, fängt wieder von vorn an und gibt den ersten und den zweiten Wert aus, fängt wieder von vorn an, gibt den ersten, zweiten und dritten Wert aus, wieder von vorn, erster, zweiter, dritter, vierter Wert usw.

Also als wenn die Schleife


                for (int i = 0; i < colNo; i++)
                {
                objects[i] = rs.getObject(i + 1);
                modell.addRow(objects);
                }




gar nicht sein müßte, sondern einfach nur dieses objekt einfach mit dem Wert colNo reicht. (Keine Ahnung wie man das fachlich richtig ausdrückt.)

Also so wie die Ausgabe aussieht, kommt ja bei der Schleife für i = 0 diese Leerzeile, für i = 1 die erste Zeile für i = 2 die zweite Zeile usw. und du willst ja nur die letzte Zeile

Dieser Beitrag wurde von Holger_N bearbeitet: 02. Juli 2012 - 21:54

Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#3 Mitglied ist offline   der dom 

  • Gruppe: aktive Mitglieder
  • Beiträge: 578
  • Beigetreten: 14. Juni 12
  • Reputation: 73
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Mein Haus, meine IT, Programmierung

geschrieben 02. Juli 2012 - 21:53

Beitrag anzeigenZitat (Holger_N: 02. Juli 2012 - 21:48)

Ich hab jetzt keine Ahnung von Java und dergleichen aber der Fehler liegt doch scheinbar in der Schleife.

die Schleife läuft los und gibt den ersten Wert vom Datensatz aus, fängt wieder von vorn an und gibt den ersten und den zweiten Wert aus, fängt wieder von vorn an, gibt den ersten, zweiten und dritten Wert aus, wieder von vorn, erster, zweiter, dritter, vierter Wert usw.

Also als wenn die Schleife


                for (int i = 0; i < colNo; i++)
                {
                objects[i] = rs.getObject(i + 1);
                modell.addRow(objects);
                }




gar nicht sein müßte, sondern einfach nur dieses objekt einfach mit dem Wert colNo reicht. (Keine Ahnung wie man das fachlich richtig ausdrückt.)


Hi,

neee, da verstehst du was falsch. Er macht quasi folgendes:

int i = 0 ist der Startwert, solange i kleiner als colNo ist, zählt i hoch. das Bedeutet, wenn er bei 0 anfängt, zählt er immer einen hoch und fängt da nicht von vorn an. Ich hab mir auch schon wegen der Schleife gedanken gemacht, steige aber nicht durch was ich da falsch mache.

An der Arbeit heute hat etwas das genauso geklappt wie ich es jetzt auch gemacht habe. Gut, da waren es
auch bloß 11 Datensätze und hier rede ich von Datensätzen > 1000 Einträge.

Zu erwähnen sei noch, dass mir die Console in Netbeans die Ergebnisse richtig ausgibt. Da kommt nur je eine Zeile pro Datensatz und nicht wie im Table 4 Zeilen / DS

Dieser Beitrag wurde von der dom bearbeitet: 02. Juli 2012 - 21:59

Mit allem, was du tust, machst du offenkundig, mit welcher Einstellung du durch's Leben gehst. -- Steffen Glückselig
0

#4 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 02. Juli 2012 - 22:02

Naja aber es läuft doch - so wie die Ausgabe aussieht - für jeden Datensatz eine Schleife ab von 0 bis Anzahl Spalten, die den ganzen Datensatz entsprechend oft anzeigt, mit immer einer "Date" mehr, wo eigentlich nur die eine letzte Ausgabe der Schleife sein soll. Das heißt doch, dass die Schleife quatsch ist und nur eine einzige Ausgabe mit dem Endwert dieser Schleife nötig ist.

Na oder in der übergeordneten Schleife falsch verschachtelt. Eine geschwungene Klammer zu spät geschlossen, dass irgendwas in eine Schleife mit reinrutscht, was da gar nicht drin sein soll.

So nun ist meine Ahnung aber zu Ende.

Dieser Beitrag wurde von Holger_N bearbeitet: 02. Juli 2012 - 22:05

Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
1

#5 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 02. Juli 2012 - 22:08

Holger_N hat recht, die for-Schleife in deiner while-Schleife ist sinnlos. ResultSet.next liefert dir im Prinzip immer eine neue Zeile. Wenn du somit in deiner while-Schleife das addRow aufrufst, würde es passen.

Edit:
Oder anders ausgedrückt...das addRow muss raus aus der for-Schleife.

Dieser Beitrag wurde von Witi bearbeitet: 02. Juli 2012 - 22:09

1

#6 Mitglied ist offline   der dom 

  • Gruppe: aktive Mitglieder
  • Beiträge: 578
  • Beigetreten: 14. Juni 12
  • Reputation: 73
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Mein Haus, meine IT, Programmierung

geschrieben 02. Juli 2012 - 22:09

Beitrag anzeigenZitat (Holger_N: 02. Juli 2012 - 22:02)

Na oder in der übergeordneten Schleife falsch verschachtelt. Eine geschwungene Klammer zu spät geschlossen, dass irgendwas in eine Schleife mit reinrutscht, was da gar nicht drin sein soll.

So nun ist meine Ahnung aber zu Ende.


Danke, das war´s. Die Zeile modell.addRow(objects) war noch mit in der Schleife - danke dir.

Ich muss gestehen, dass Netbeans ansich totales Neuland für mich ist.... ^^
Mit allem, was du tust, machst du offenkundig, mit welcher Einstellung du durch's Leben gehst. -- Steffen Glückselig
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0