# Anzahl der Datensaetze abfragen



## Guest (28. Okt 2005)

Hallo
ich habe folgenden Code und moechte gern die Anzahl der Datensaetze herausfinden:


> String sql = "SELECT name FROM telefonbuch WHERE name='Meier'";
> ResultSet rs = stmt.executeQuery(sql);
> rs.last();
> rs.getRow();



dabei tritt aber immer folgender Fehler auf:
java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY

wie kann man anderweitig die Anzahl der gefundenen Datensaetze ausgeben?

viele gruesse
oache


----------



## sliwalker (28. Okt 2005)

Hoi,

```
String sql = "SELECT name FROM telefonbuch WHERE name='Meier'"; 
ResultSet rs = stmt.executeQuery(sql); 

// Du brauchst das dafür
ResultSetMetaData rsmd = rs.getMetaData();

// weiß nicht genau ob es wirklich int zurückgibt
int anzahl = rsmd.getColumnCount();

// EDIT:
// das hier m an die einzelnen ergebnisreihen zu kommen
while (rs.next())
{
    // Beispielsweise
    String vorname = rs.getString("vorname");
}
```

greetz
SLi


----------



## oache (28. Okt 2005)

hi 

aber gibt getColomnCount nicht die Anzahl der Spalten an?
ich brauche aber die Anzahle der Datensaetze....


----------



## DP (28. Okt 2005)

select count(*) from tab where spalte = 'Meier'


----------



## oache (28. Okt 2005)

ok 
aber wie sieht der code dann aus?


> ResultSet rs = executeQuery("select count(*) from tab where spalte = 'Meier'");
> ???



wie kann ich jetzt auf die anzahl zugreifen??


----------



## DP (29. Okt 2005)

while(rs.next){
int i = s.getint(1);
}

kommt auf die menge der suchergebnisse an. sonst musste long nehmen. 

und ich würde aber

where spalte.tolowercase() = 'meier'

nehmen.


----------



## oache (29. Okt 2005)

dann kommt aber die fehlermeldung:
java.sql.sqlException: [Microsoft][ODBC Driver Manager] Ungueltiger Cursorstatus


----------



## sliwalker (29. Okt 2005)

Hoi,

oh sorry. Da hab ich Dir was falsches gegeben 

Poste doch mal Deinen Code 
Aber in Code-tags -- nicht Zitat bitte


----------



## Guest (30. Okt 2005)

Versuche das hier vielleicht
	
	
	
	





```
...
Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery(...);
rs.last();
int rows = rs.getRow();
rs.beforeFirst();
...
```


----------



## oache (3. Nov 2005)

ich habs rausbekommen wie es geht:

```
String sql1 = "SELECT COUNT(*) FROM Telefonbuch WHERE name='Meier';
         ResultSet rs = stmt.executeQuery(sql1);
         rs.next(); 
         rs.getInt(1);
```

wichtig dabei:
man muss zuerst rs.next() aufrufen und dann erst rs.getInt(1)
ansonsten kommt immer eine fehlermeldung

viele gruesse
oache


----------



## DP (3. Nov 2005)

na prost mahlzeit. in 2 postings oben steht jeweils rs.next(). 

man sollte antworten, die man auf seine fragen bekommt ab und zu mal lesen


----------



## oache (3. Nov 2005)

> na prost mahlzeit. in 2 postings oben steht jeweils rs.next().



????????

na das hab ich ja doch gemacht!!!!!! 
hab dann nur noch mal meine lösung dargestellt, wie ich nun die anzahl der datensätze bekommen habe


----------

