Oracle catsearch 中的 Java 准备语句

发布于 2024-11-09 19:28:28 字数 348 浏览 0 评论 0原文

我面临着在 catsearch 子句中绑定准备好的语句参数的问题。执行时我得到 java.sql.SQLException: Invalid columns index 我尝试了一些其他方法,通过转义引号(单引号和双引号),但仍然遇到 SQL 异常(无效列/缺少右括号) 如果我能指出正确的绑定方式,我将不胜感激 -

String sqlForcatString = SELECT * from EVENT_TABLE where catsearch(DATA,\' %?% inside TAG\',null) stmt = conn.prepareStatement(sqlForCatString); stmt.setString(1,keyValue);

I am facing problems binding the prepared statement argument within the catsearch clause. On execution I get java.sql.SQLException: Invalid column index
I tried a few other methods, by escaping quotes(both single and double), but still running into SQL Exceptions (Invalid column/Missing right parentheses)
Appreciate if I could be pointed to the correct way of binding -

String sqlForcatString = SELECT * from EVENT_TABLE where catsearch(DATA,\' %?% within TAG\',null)
stmt = conn.prepareStatement(sqlForCatString);
stmt.setString(1,keyValue);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云巢 2024-11-16 19:28:28

您的参数包含在 sql 查询中的带引号的字符串中,因此 sql 解析器无法识别它。您应该能够在查询中使用字符串串联来构建此字符串:

String sqlForcatString = "SELECT * from EVENT_TABLE where catsearch(DATA,'<query> <textquery grammar=\"context\"> %' || ? || '% within TAG</textquery></query>',null)";
stmt = conn.prepareStatement(sqlForCatString);
stmt.setString(1,keyValue);

Your parameter is contained in a quoted string in the sql query and so it ist not recognizable by the sql parser. You should be able to use string concatenation inside the query to build this string instead:

String sqlForcatString = "SELECT * from EVENT_TABLE where catsearch(DATA,'<query> <textquery grammar=\"context\"> %' || ? || '% within TAG</textquery></query>',null)";
stmt = conn.prepareStatement(sqlForCatString);
stmt.setString(1,keyValue);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文