Korzystanie z parsera bazy danych Oracle z Java przy użyciu JDBC
Piszę narzędzie w Javie, które przesyła oświadczenia do bazy danych, które są później uruchamiane. Używam JDBC do łączenia się z bazą danych. Baza danych to Oracle 10g.
Zanim instrukcje zostaną zapisane w bazie danych, chcę je przeanalizować, aby sprawdzić, kiedy zostaną uruchomione później, nie będzie żadnych problemów. Szukałem w tym celu rozwiązania ANTLR, ponieważ dostępne są gramatyki, ale z pewnością Jeśli mam połączenie z bazą danych, musi istnieć sposób na wykorzystanie baz danych wbudowanych w parser.
Tak więc zasadniczo moje pytanie brzmi:
Czy istnieje sposób używania JDBC? Mogę wykonać wywołanie do parsera bazy danych przekazującego ją instrukcję SQL i zwróci mi jakąś informację zwrotną, informując mnie, czy to się powiedzie, czy jakieś komunikaty o błędach?
Każda pomoc jest bardzo mile widziana, wielkie dzięki.
Edytować:
Używanie connection.prepareStatement wydaje się nie działać, na przykład, dane wyjściowe zostały pomyślnie przeanalizowane!
String statement = "WHERE DISTINCT SELECT";
Connection connection;
try {
connection = this.controller.getDataSource().getConnection();
connection.prepareStatement(statement);
connection.close();
mainPanel.setPositiveText("Parsed Successfully!");
} catch (Exception e) {
mainPanel.setNegativeText("ERROR: " + e.getMessage());
return;
}
Soultion, którego użyłem, jest następujący:
String statement = "DECLARE "
+ "myNumber NUMBER; "
+ "BEGIN "
+ "myNumber := SYS.dbms_sql.open_cursor; "
+ "SYS.DBMS_SQL.PARSE(myNumber, '" + text + "', SYS.DBMS_SQL.NATIVE); "
+ "END;";
Connection connection;
try {
connection = this.controller.getDataSource().getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(statement);
preparedStatement.execute();
connection.close();
mainPanel.setPositiveText("Parsed Successfully!");
} catch (Exception e) {
mainPanel.setNegativeText("ERROR: " + e.getMessage());
System.out.println(e.getMessage());
return;
}