JDBC SQL Statements - Einschränkung

MasterEvil

Erfahrenes Mitglied
Und wieder mal ein Fehler bei dem ich net weiter komm :(

Ich habe ein PostgreSQL Datenbank und greife auf diese mittels dem postgres-JDBC Treiber zu.

Das erste Problem das auftrat war: Das Statement wird komplett in Kleinbuchstaben umgewandelt und ausgeführt, bis ich das gemerkt hate ;)
Nach änderung der Tabellen- und Spaltennamen in Kleinbuchstaben gingen die Statements dann. Jedoch nur gewöhnliche SELECT Statements, beim Versuch etwas mit LIKE und Escapezeichen auszulesen (SELECT * FROM foo WHERE bar LIKE 'blub%') bekomm ich kein Ergebnis, aber leider auch keinen Fehler ;)

Hier mal kurz der grundsätzliche Code mit dem ich die Daten auslese:

Code:
	public HWDatabaseObject() {
		String HWDriver_full	= "org.postgresql.Driver";
		String HWConnection	= "jdbc:postgresql://"+hostname+"/"+database+"?"+"user="+user+"&password="+psswd;

			try {
				// Treiber laden
				Class.forName(HWDriver_full);
				// Verbindung zur Datenbank herstellen
	            db = DriverManager.getConnection(HWConnection);
	            // Metadaten lesen zur Überprüfung ob Verbindung erfolgreich war
	            db.clearWarnings();
	            
	            myStatement = db.createStatement();
	    		rs = myStatement.executeQuery("SELECT * FROM personal WHERE name1 LIKE 'b%'");

			Kunden.clear();
			count = 0;
	    		try {
					while(dbObject.rs.next()) {
						myKunde = new kunde();

						// PersonalID setzen, (Datenbank ID)
						myKunde.setPersonalID(dbObject.rs.getInt(1));
					
					             ....................................

						// TerminInfo setzen
						if(dbObject.rs.getString(2)!=null) {
							myKunde.setTerminInfo(dbObject.rs.getString(27));
						} else {
							myKunde.setTerminInfo("");
						}
					
						KundenListe.add(myKunde);
						myKunde = null;
						count++;
					}
				} catch (SQLException e) {
					// Fehlermeldung, Fehler bei der Abfrage
					System.out.println(e.toString());
				}
			}
	        }
			catch (ClassNotFoundException e) {
	            // Fehlermeldung, Treiber nicht gefunden
				System.out.println(e.toString());
	        }
			catch (SQLException e) {
				// Fehlermeldung, Fehler bei der Verbindung
				System.out.println(e.toString());
	        }
	}
 
Ok, danke an alle die es sich durchgelesen haben, ich hätte doch erstmal intensiver suchen sollen ;)

Also das mit der Groß-/Kleinschreibung ist Linux schuld :p kann man z.B. mit der Funktion UPPER() umgehen.

Dass LIKE funktioniert jetzt nachdem ich folgendes gemacht habe:
myStatement.setEscapeProcessing(true);

In der Java Doku gibts auch noch was tolles zu den Escapes, hatte aber bei mir so nicht geklappt.
http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/statement.html#999472
 
Zurück