使用JDBC从Java使用Oracle数据库解析器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用JDBC从Java使用Oracle数据库解析器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2053字,纯文字阅读大概需要3分钟。
内容图文
![使用JDBC从Java使用Oracle数据库解析器](/upload/InfoBanner/zyjiaocheng/899/6717f246aeb9453eab697ba96714eb7d.jpg)
我正在用Java编写一个工具,它将语句提交给数据库,这些数据库稍后运行.我正在使用JDBC连接到数据库.该数据库是Oracle 10g.
在将语句写入数据库之前,我想解析它们以检查它们何时运行以后不会出现问题.我考虑使用ANTLR解决方案,因为有可用的语法,但当然如果我有数据库的连接,必须有一种方法来使用解析器内置的数据库.
基本上我的问题是:
有没有办法使用JDBC我可以调用数据库解析器传递一个SQL语句,它会返回一些反馈,告诉我它是否成功或任何错误消息?
任何帮助是极大的赞赏,
非常感谢.
编辑:
使用connection.prepareStatement似乎不起作用,例如此输出已成功解析!
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;
}
我使用的灵魂如下:
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;
}
解决方法:
我不知道你到底想要什么,但也许你想尝试使用包DBMS_SQL和它的方法PARSE.这仅适用于DML语句.这就是Oracle SQL Developer的功能.
此parser也可用于DML语句.对于PL / SQL,它需要一些调整.据我所知,没有人花足够的时间为Oracle的DDL创建一个真正完全验证的解析器.
Here是我如何使用它的一个例子:
declare
l_cursor number := dbms_sql.open_cursor;
l_offset number := -1 ;
begin
begin
dbms_sql.parse( l_cursor, :st, dbms_sql.native );
exception when others then
l_offset := dbms_sql.last_error_position;
end;
dbms_sql.close_cursor( l_cursor );
:off := l_offset;
end;
只需执行此块.传递一个VARCHAR2(String)类型的输入参数(最大32KB)和一个输出参数NUMBER.
内容总结
以上是互联网集市为您收集整理的使用JDBC从Java使用Oracle数据库解析器全部内容,希望文章能够帮你解决使用JDBC从Java使用Oracle数据库解析器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。