Announcement

Collapse
No announcement yet.

geht nicht in die while-Schleife

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

  • geht nicht in die while-Schleife

    Ich habe eine Abfrage und ich möchte abfragen, ob in ResultSet ein Wert enthalten ist, oder ob keiner gefunden werden konnte. Aber das Problem ist, dass er nicht in die while-Schleife hineingeht. Warum nicht? Bisher hatte das so mit dem Abfrage des ResultSet funktioniert.<BR><BR>

    Ich verstehe es nicht!<BR><BR> HAt jemand einen Tip für mich?<BR><BR>

    <PRE>
    public void Speicherplatz_vorhanden()
    {
    try
    {
    String vorhanden ="SELECT Platz FROM Speicherplatz WHERE Schlucht =" + Schlucht_neu+" AND LiRe ='" +LiRe_neu + "' AND Etage ="+Etage_neu+ " AND Hausnr ="+Hausnr_neu;
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(vorhanden);

    while (rs.next())
    {
    int test = rs.getInt ("Platz");
    System.out.println ("Platznr ermittelnt? " +test);
    boolean b = rs.wasNull();

    if (b == true)
    {
    System.out.println ("Speicherplatz noch nicht vorhanden");
    Lagerplatz_anlegen();
    }
    else
    {
    System.out.println ("Speicherplatz vorhanden");
    platznr = test;
    }
    }
    }
    }
    </PRE>

  • #2
    Siehe Doku: Resultset.next() -->

    Moves the cursor down one row from its current position.<br><br>
    Dies setzt aber voraus, daß ein ResultSet vorhanden ist. D.h. mindest eine Zeile muß das Select als Ergebnis bringen.

    Probiers so:

    <pre>
    Statement stmt = conn.createStatement();
    ResultSet rset = stmt.executeQuery(sql);
    ResultSetMetaData rsetMeta = rset.getMetaData();
    int numCols = rsetMeta.getColumnCount();
    if (numCols>1)
    {
    while (rset.next())
    {

    }
    }
    rset.close();
    stmt.close();
    </pre>

    Sollte gehen.

    lg Dietma

    Comment


    • #3
      Ich habe das soweit angepasst: <BR><BR>
      <PRE>
      Statement stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery(vorhanden);
      ResultSetMetaData rsMeta = rs.getMetaData();
      int numCols = rsMeta.getColumnCount();
      if (numCols >0)
      {
      while (rs.next());
      {
      int test = rs.getInt ("Platz");
      platznr = test;
      System.out.println ("Platznr ermittelnt? " +platznr);
      }
      }
      else
      {
      System.out.println ("Speicherplatz noch nicht vorhanden");
      Lagerplatz_anlegen();
      }
      stmt.close();
      rs.close();
      </PRE>

      er geht diesmal bis in die while-Schleife, aber dann bekomme ich die Fehlermeldung: JZ0R1 ResultSet ist im Zustand IDLE, da Sie derzeit nicht auf eine Zeile zugreifen.<BR><BR>

      Was soll ich mir darunter vorstellen? Ich gehe doch mit rs.next () auf das erste element, oder nicht? Bisher hat es so zumindest immer geklappt, und ich konnte das Feld auslesen. Warum also hier nicht?
      <BR><BR>

      Karen<BR><BR&gt

      Comment


      • #4
        Ist mir nicht ganz klar was passiert, wie Du schon meinst, ist lt. Sybase Doku der Fehler so zu verstehen, daß das rs.next() nicht gemacht wurde.

        Versuch es mal mit einem IF anstatt der while - Schleife. Du möchtest doch sowieso nur einen Datensatz. Was für ein Ergebnis bringt das Select, wenn du es direkt ausführst?

        lg Dietma

        Comment

        Working...
        X