# java.sql.SQLException: No data found



## Marfir (1. Mai 2006)

Hallo,

ich kann mir den Fehler nicht erklären, aber vll wisst Ihr woran es hängt.


```
ergebnis = befehl.executeQuery("Select Count(*) ...");
            
            while (ergebnis.next())
            {
                ausgabe.setText(ausgabe.getText() + "Einträge insgesamt:\t" + ergebnis.getString(1) + "\n");
                System.out.println(ergebnis.getString(1));
            }
```

ausgabe ist ein JLabel. Wenn ich die Zeile ausklammere funzt es, ansonsten kommt die Exception "No data found". Es sind aber Daten da, nur scheint er (wieso auch immer) es nicht im Label anzeigen zu können.
Versteht Ihr das?


----------



## André Uhres (1. Mai 2006)

In dem geposteten Code ist kein Problem erkennbar.


----------



## Marfir (1. Mai 2006)

```
/*
 * showinfo.java
 *
 * Created on 30. April 2006, 22:34
 */
/**
 *
 * @author  dödelup
 */

package datenbank;

import javax.swing.*;
import java.sql.*;


public class showinfo extends javax.swing.JFrame
{
    //Datenbank
    Connection verbindung=null;
    Statement befehl=null;
    ResultSet ergebnis=null;
    
    /** Creates new form showinfo */
    public showinfo()
    {
        initComponents();
        
        JLabel ausgabe = new JLabel("Anzahl der Objekte\tAnzahl der Bezeichnungen\n");
        ausgabe.setVisible(true);
        
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            verbindung = DriverManager.getConnection("jdbc:odbc:db2", "", "");
            befehl = verbindung.createStatement();
            String str="SELECT COUNT(*) FROM Daten WHERE Kategorie='Planeten'";
            ergebnis = befehl.executeQuery(str);
            
            while (ergebnis.next())
            {
                ausgabe.setText(ausgabe.getText() + "Planeten\t" + ergebnis.getString(1).toString() + "\n");
                System.out.println(ergebnis.getString(1).toString());
            }
        }
        catch (Exception e)
        {
            System.out.println("Fehler showinfo 1: " + e.toString());
        }
        try
        {
            befehl.close();
            verbindung.close();
        }
        catch (Exception e)
        {
            System.out.println("Fehler showinfo 2: " + e.toString());
        }
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Datenbank Information");
        setResizable(false);
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-400)/2, (screenSize.height-300)/2, 400, 300);
    }
    // </editor-fold>                        
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[])
    {
        java.awt.EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                new showinfo().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    // End of variables declaration                   
    
}
```


----------



## André Uhres (1. Mai 2006)

ausgabe wird nicht zum frame hinzugefügt.
Ansonsten ist kein Problem erkennbar:

```
getContentPane().add(ausgabe, BorderLayout.NORTH);
```


----------



## Kawa-Mike (1. Mai 2006)

Ich kann auch kein Problem erkennen. Es ist eine SQL-Exception die du bekommst ?
Evtl. liegt das Problem am doppelten Zugriff auf den Counter.
Probier einfach mal folgendes:
...
String counter = ergebnis.getString(1);
...
und ersetze die beiden folgenden Aufrufe von ergebnis duch counter.
Würde mich interessieren, ob es daran lag oder nicht. Gib uns doch bitte eine kurze Rueckmeldung.
Gruss
Mike


----------



## Marfir (1. Mai 2006)

@André Uhres

Danke. Nun seh ich auch ein Ergebnis. ^^

@Kawa-Mike

Jo daran lag es. Fehlermeldungen in Java sind irgend wie mehr verwirrend als nützlich   :? 

Jetzt hab ich aber noch das Problem, dass "\t" und "\n" nicht unterschützt wird. D.h. das Label schreibt alles nach ein ander...  ???:L


----------



## André Uhres (1. Mai 2006)

Marfir hat gesagt.:
			
		

> Jetzt hab ich aber noch das Problem, dass "\t" und "\n" nicht unterschützt wird. D.h. das Label schreibt alles nach ein ander...  ???:L




```
JLabel ausgabe = new JLabel("<html><table><tr><td>Anzahl der Objekte</td>" +
                "<td>Anzahl der Bezeichnungen</td></tr>");
...
                ausgabe.setText(ausgabe.getText() + "<tr><td>Planeten</td><td>" 
                        + counter + "</td></tr>");
```


----------



## Marfir (2. Mai 2006)

Danke!
Ist das eigentlich die einzige Möglichkeit oder nur die einfachste?


----------



## André Uhres (2. Mai 2006)

Marfir hat gesagt.:
			
		

> Danke!
> Ist das eigentlich die einzige Möglichkeit oder nur die einfachste?


Für JLabel ist es die einzige Möglichkeit, afaik.
JTextArea erkennt \t und \n:

```
JTextArea ausgabe = new JTextArea("Anzahl der Objekte\tAnzahl der Bezeichnungen\n");
        ausgabe.setTabSize(18);
        ausgabe.setEditable(false);
        ausgabe.setOpaque(false);
...
                ausgabe.setText(ausgabe.getText() + "Planeten\t" + ergebnis.getString(1).toString() + "\n");
```


----------



## Marfir (2. Mai 2006)

ok danke.


----------

