Hallo,
ich stelle mit Hilfe eines Servlets eine Abfrage an eine Access-DB. Dabei verwende ich die LIKE - Klausel für eine Wortgruppe (Bsp: "suche den Text"), d.h. also mit Leerzeichen.
(Anm.: Die Verwendung von * anstelle von % in der Like-Klausel hatte mich auch verwundert, aber nach ein paar Tests direkt in Access zeigte sich, dass das der richtige Weg ist.)
Ich bekomme diese (scheinbar) leichte Aufgabe, aber einfach nicht gebacken, entweder bekomme ich eine NullPointerException (NPE) oder das erhaltene ResultSet ist leer.
Hier mal, dass was ich so alles ausprobiert habe:
1. Verwendung eines PreparedStatement:
Der Aufruf pstm.setString() produziert eine NPE! Darauf hin habe ich mehrere Kombinationen von '*?*' probiert, sobald ich aber etwas anderes nehme (Bsp. Anführungszeichen, Kombination aus Anführungszeichen und Hochkommas, ...) funktioniert zwar (meist) die Zeile pstm.setString(), aber dafür liefert executeQuery eine SQLException (Access meldet falsche Syntax -> was ja auch stimmt)
2. Verwendung von Statement
Dies funktioniert zwar, jedoch ist das ResultSet leer! (Die direkte Abfrage in Access liefert jedoch mehrere Ergebnisse, d.h. die Abfrage müsste korrekt sein.)
Ich bin für jede Anregung dankbar, wie man dieses Problem lösen könnte!
Grüße
Axel
ich stelle mit Hilfe eines Servlets eine Abfrage an eine Access-DB. Dabei verwende ich die LIKE - Klausel für eine Wortgruppe (Bsp: "suche den Text"), d.h. also mit Leerzeichen.
(Anm.: Die Verwendung von * anstelle von % in der Like-Klausel hatte mich auch verwundert, aber nach ein paar Tests direkt in Access zeigte sich, dass das der richtige Weg ist.)
Ich bekomme diese (scheinbar) leichte Aufgabe, aber einfach nicht gebacken, entweder bekomme ich eine NullPointerException (NPE) oder das erhaltene ResultSet ist leer.
Hier mal, dass was ich so alles ausprobiert habe:
1. Verwendung eines PreparedStatement:
Code:
pstm = connection.prepareStatement("SELECT * FROM TabName WHERE TabName.ColName LIKE '*?*';");
pstm.setString(1, identifier);
rs = pstm.executeQuery();
Der Aufruf pstm.setString() produziert eine NPE! Darauf hin habe ich mehrere Kombinationen von '*?*' probiert, sobald ich aber etwas anderes nehme (Bsp. Anführungszeichen, Kombination aus Anführungszeichen und Hochkommas, ...) funktioniert zwar (meist) die Zeile pstm.setString(), aber dafür liefert executeQuery eine SQLException (Access meldet falsche Syntax -> was ja auch stimmt)
2. Verwendung von Statement
Code:
stm = connection.createStatement();
String query = "SELECT * FROM TabName WHERE TabName.ColName LIKE '*" + identifier + "*';";
rs = stm.executeQuery(query);
Dies funktioniert zwar, jedoch ist das ResultSet leer! (Die direkte Abfrage in Access liefert jedoch mehrere Ergebnisse, d.h. die Abfrage müsste korrekt sein.)
Ich bin für jede Anregung dankbar, wie man dieses Problem lösen könnte!
Grüße
Axel