Java Query

Liebe/-r Experte/-in,

ich habe ein problem mit meinem Program:

ich habe zwei jTextField(Name,Vorname) und einen Button(suchen).
Bei eingabe eine Name(In DB vorhanden) in jTextField1 und auf Button(suchen) drücken,
ich möchte dass Vorname auf dem jTextField(Vorname) angezeigt wird, leider gibt mir immer die fehlermeldung
„Die query ist fehler geschlagen“
Mein Code sieht so aus:frowning:Spaltenamen in meine Tabelle
heißen: Name,Vorname)

String Name= jTextField1.getText();

String sql= „SELECT Vorname FROM mieter WHERE
Name like '“+Name+"’";

System.out.println(sql);
try{
ResultSet res= state.executeQuery(sql);

String vorname1= res.getString(„Vorname“);

jTextField2.setText(vorname1);

res.close();

}catch(SQLException e)
{
System.out.println(„Die query ist fehler
geschlagen!“);
}

Danke im Voraus!
Gruß Simo

Hallo Rachid,

zu meinem Bedauern kann ich Deine Frage nicht beantworten. Ich bin seit ca. 8 Jahren nicht mehr als (Java) Programmierer tätig. Es tut mir leid.

Viele Grüße
Saeed

Hallo,

Du solltest dir die Details der Exception anschauen. Bau in deinen Exception-Handler die folgenden zwei Zeilen ein:

System.out.println( e.getMessage() );
e.printStackTrace();

Die ausgegebenen Meldungen sollten dir schon weiterhelfen. Falls du damit nichts anfangen kannst, dann melde dich wieder (mit der Ausgabe).

Schöne Grüße, Robert

String sql= „SELECT Vorname FROM mieter WHERE
Name like '“+Name+"’";

Hallo,

Die SQL-Anfrage sieht auf den ersten Blick o.k. aus.

ResultSet „weiterschalten“: Ein ResultSet gibt die Ergebnisse einer Anfrage zeilenweise bzw. Datensatz für Datensatz wieder. Direkt nach dem executeQuery steht der interne Zeiger des ResultSets „vor“ dem ersten Datensatz. D.h. man sieht noch keine Daten aus dem
Anfrageergebnis bzw. bekommt eine Exception, wenn man mit res.getString versucht, Daten zu lesen. Man muss noch die Methode res.next() aufrufen. Liefert die den Wert true zurück, dann gibt es noch ungelesene Datensätze im ResultSet und der interne Zeiger steht jetzt „auf“ dem nächsten Datensatz. Also in Ihrem Fall:

if (res.next()) {
String vorname1= res.getString(„Vorname“);
jTextField2.setText(vorname1);
}

Wenn man mehrere Datensätze als Ergebnis erwartet, kann man statt „if (res.next())“ einfach eine Schleife mit „while (res.next())“ bauen. Der ResultSet zeigt dann bei jedem Schleifendurchlauf einen neuen Datensatz aus dem Anfrageergebnis.

  1. Groß-/Kleinschreibung
    Auf welche Datenbank greifen Sie zu (Oracle, MySQL, Access, …) ? Bei vielen Datenbanksystemen spielen Groß- und Kleinschreibung in SQL keine Rolle. Ausnahme: Wenn Spalten einer Tabelle (Vorname, Name) beim Anlegen der Tabelle in Anführungszeichen gesetzt wurden, also „Vorname“, dann muss die Schreibweise in der Anfrage mit der Schreibweise bei der Tabellenerzeugung übereinstimmen und ebenfalls in Anführungszeichen gesetzt werden.

Genauere Fehlermeldung ausgeben:

}catch(SQLException e)
{
System.out.println(„Die query ist fehler
geschlagen!“);
}

Die SQL-Exception enthält einen Meldungstext, an dem man meistens erkennen kann, was das genaue Problem ist.
Also einfach statt des obigen Codes einmal folgendes versuchen

}catch(SQLException e)
{
System.out.println("Die Query ist mit folgendem Fehler fehlgeschlagen: " + e.getMessage());
}

Falls Sie aus der Fehlermeldung nicht schlau werden oder die Hinweise 1) und 2) nicht weiterhelfen, senden Sie mir einfach eine neue Anfrage mit der unter 3) ausgegebenen Fehlermeldung.

Mit freundlichen Grüßen

Michael Skusa