# Fehler in der SQL-Anweisung



## exko (17. Jul 2006)

Hallo Leute, 

kann mir jemand helfen und zwar hab ich folgende SQL-Abfrage, bekomm aber keine Werte zurück.

sql = "select kundenNr from Kunde where name = '" + nachname + "'"+ " AND vorname = '" + vorname + "'"
+ " AND gebDatum = '" + gebDat + "'";

Danke

Gruss Andi


----------



## exko (17. Jul 2006)

Sorry wollte eigentlich den ganzen Code-Abschnid mir liefern.

public int leseKundenNr(String vorname, String nachname, String gebDat) {
        int result = 0;

        try {

            sql = "select kundenNr from Kunde where name = '" + nachname + "'"
                    + " AND vorname = '" + vorname + "'"
                    + " AND gebDatum = '" + gebDat + "'";

            rs = einReader.query(sql);
            rs.next();
//            rs.findColumn("kundenNr");


            result = rs.getInt("kundenNr");

            einReader.closeResult(rs);
        }
        catch (Exception e) {
            System.out.println("DbGetKundenNr-Fehler: " + e);
        }

        return result;
    }

bekomme immer nur als wert eine 0 zurück, sollte aber andere werte zurückliefern

Danke für eure hilfe

exko


----------



## foobar (17. Jul 2006)

Funktioniert dieselbe Query denn in einem SQLTool?


----------



## exko (17. Jul 2006)

Ja hab die Abfrage getestet, sie funktioniert.

Hab keine Ahnung an was es liegt?????????


----------



## Guest (17. Jul 2006)

Hallo, 

also Fehlermeldung kommt folgendes: 


DbGetKundenNr-Fehler: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.


Die SQL Anfrage stimmt, vielleicht liegt es am Resultset??


----------



## Guest (17. Jul 2006)

ach, 

ich hatte die zwei letzteren SQL Anfragen auskommentiert, ansonsten wäre die Fehlermeldung mit 3 fehlenden Parametern erschienen


----------



## KSG9|sebastian (17. Jul 2006)

Nimm mal ein PreparedStatement, dann kannst du zumindest falsch escapte Werte ausschließen...


----------



## thE_29 (17. Jul 2006)

rs.next();
// rs.findColumn("kundenNr");


result = rs.getInt("kundenNr"); 

Dir is schon klar das dir das ne Exception auch liefern kann!

Nur weil du rs.next() sagst, heißt das noch lange nicht das ein resultset produziert worden ist.

Immer mit if(rs.next()) { //todo }


----------



## Guest (17. Jul 2006)

Ne das war mir nicht ganz klar. 

Hab nicht so ganz kapiert was du meintest, hab es folgendermassen eingebettet: 


```
public int leseKundenNr(String vorname, String nachname, String gebDat) {
        int result = 0;
        
        try {
            

            sql = "Select kundenNr From Kunde Where name = "+ nachname+" AND vorname = "+vorname+" AND     gebDatum = "+gebDat+""; 

            
            System.out.println("SQL-Abfrage: " + sql);
            
            rs = einReader.query(sql);
            if(rs.next()) {
                result = rs.getInt("kundenNr");
            } 

            
            einReader.closeResult(rs);
        }
        catch (Exception e) {
            System.out.println("DbGetKundenNr-Fehler: " + e);
        }

        
        return result;
    }
```


Kommt jedoch wieder die gleiche Fehlermeldung... 

Ich weiss echt nicht mehr weiter  ???:L


----------



## Guest (17. Jul 2006)

biiiitte heeelfen!!  :autsch:


----------



## Murray (17. Jul 2006)

Zumindest im zuletzt geposteten Code (17.07.,16:55) fehlen die einfachen Anführungszeichen um die variablen Inhalte.


----------



## thE_29 (18. Jul 2006)

Und immer Exception posten bzw gscheit ausgeben lassen (e.printStackTrace()); damit wir auch was anfangen können!


----------

