# ResultSet vergisst Reihe?



## ente382 (5. Mai 2008)

Hallo,

ich sitze jetzt schon ne ganze weile daran und kann den Fehler nicht finden. wenn ich eine datenbankabfrage durchführe, liefert mir mein Resultset zwar die korrekte Reihenanzahl, jedoch wenn ich die einzelnen Werte in ein Array schreibe, wird immer die erste Reihe nicht in das Array eingetragen.


```
String sSql = sqlQuery;

      Statement st = null;
      ResultSet rs = null;

      i = 0;

      try
         {
         Class.forName(sDbDrv);
         st = DriverManager.getConnection(sDbUrl, sUsr, sPwd).createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                  ResultSet.CONCUR_READ_ONLY);
         rs = st.executeQuery(sSql);
         ResultSetMetaData rsmd = rs.getMetaData();
         int cols = rsmd.getColumnCount();
         int rows = 0;
         while (rs.next())
            {
            rows++;
            }
         rs.first();
         result = new String[rows + 1][cols];
         for (i = 1; i <= cols; i++)
            {
            // Achtung: erste Spalte mit 1 statt 0
            result[0][i - 1] = rsmd.getColumnName(i);
            }
         i = 1;
         while (rs.next())
            {
            for (int j = 1; j <= cols; j++)
               {
               if ((j == 19 || j == 20) && (rs.getString(j) != null))
                  {
                  result[i][j - 1] = rs.getString(j).replace(',', '.');
                  }
               else
                  {
                  result[i][j - 1] = rs.getString(j);
                  }
               }
            i++;
            }
         }
```

bspw. müsste das Ergebnis bei meiner Abfrage sein (IDs):
BA002
...
BA012

bei rows zeigt er 11 an,was auch stimmt. in die erste Reihe des Results(result[0]) kommen die Spaltennamen. Jedoch lässt er die letzte Zeile von result leer, weil er komischerweise das erste ergebnis nicht mit reinschreibt. 
die Ausgabe sieht dann so aus:
BA003
...
BA012

Ich hab bestimmt nur irgenwo ne kleinigkeit übersehen...
danke für eure Hilfe!


----------



## SlaterB (5. Mai 2008)

wenn du auf first() setzt dann ist das eine andere Situation als zu Beginn,
dann ist das quasi der erste next()-Aufruf,

mit  dem ersten next() von
while (rs.next()) 
gehts du dann schon zum zweiten Element


verwende
beforeFirst()
statt 
first()


----------



## ente382 (5. Mai 2008)

Boah, vielen Dank, es läuft.
Hab doch gewusst dass es nur son kleiner Fehler sein konnte


----------

