2009-05-27 36 views
1

Ich habe eine Java-Anwendung mit JDBC für die Datenbank-Interaktion. Ich möchte eine Suche basierend auf einer Reihe von regulären Ausdrücken durchführen, jedoch sollte die Anwendung generisch sein, wir wissen nicht, ob die Datenbank-Engine von mysql, oracle, sql server usw. verwendet wird, aber wir sind uns ziemlich sicher, dass es beides sein wird mysql oder oracle.Reguläre Ausdrücke in JDBC

Beschränken reguläre Ausdrücke meine Anwendung auf eine bestimmte Datenbank oder kann ich sie verwenden, ohne mich um Kompatibilität zu kümmern?

Antwort

4

Nun, die Verwendung regulärer Ausdrücke beschränkt Sie auf DBMS, die sie unterstützen :-). Das heißt, zumindest Oracle, MySQL, PostgreSQL und MS-SQL unterstützen eine Art von Regexp, so dass es im Prinzip kein Problem sein sollte. Sie könnten natürlich immer noch auf Kompatibilitätsprobleme stoßen.

Ihre beste Wette ist wahrscheinlich, die Verwendung von regulären Ausdrücken auf einige definierte Teile der Anwendung zu beschränken, wie zum Beispiel einige gespeicherte Prozeduren oder ein Modul in Ihrer App, das die SQL-Abfragen generiert.

Das ist sowieso eine gute Übung und wird spätere Änderungen machbar machen.

3

Während in der Theorie glauben, dass ich beide MySQL und Oracle gemeint sind POSIX ERE zu unterstützen, verwendet MySQL REGEXP wo Oracle REGEXP_LIKE verwendet und regular-expressions.info stellt fest, Macken mit Oracle-Implementierung (es wahrscheinlich ähnliche für MySQL sind).

Also, Sie können wahrscheinlich nicht verwenden.

1

Ja, die Verwendung nicht standardmäßiger SQL-Funktionen wie die Suche nach regulären Ausdrücken beschränkt Ihre Anwendung auf eine bestimmte Datenbank.

Wie von slekse vorgeschlagen, ist es eine gute Lösung, die Verwendung von nicht standardmäßigen SQL-Funktionen auf ein bestimmtes Modul zu beschränken. Dann müssen Sie das Modul nur ändern, wenn Sie DBMS ändern.