带有 JDBC 准备语句的字符串中的圆括号

2024-03-13

这是我的 Java JDBC 代码(例如修改和简化的):

ps = connection.prepareStatement("SELECT a,b,c FROM mytable WHERE category ~ ?");
ps.setString(1, "my/super/category/abc(def");
                                      ^
                                      |
    +---------------------------------+
    |
//this character is problem
result = ps.executeQuery();

由于字符串中的圆括号,它不起作用。

如何在准备好的语句中转义圆括号?

编辑:根据我的回答(见下文)我确实纠正了问题。


我会回答自己 - 问题在“~”(波形符)中。

经过一番阐述后,有一个有趣的发现:

当SQL代码是这样时(参见SQL代码中的“等于”标记):

ps = connection.prepareStatement("SELECT a,b,c FROM mytable WHERE category = ?");

不需要逃避。但是当 SQL 代码是这样的时候(参见 SQL 代码中的“波浪号”标记):

ps = connection.prepareStatement("SELECT a,b,c FROM mytable WHERE category ~ ?");

如果有特殊字符,则需要进行转义,在本例中为“(”或“)”:

ps.setString(1, "super/category/abc(def".replaceAll("\\(", "\\\\(")));

这是因为模式匹配:PostgreSQL 模式匹配 http://www.postgresql.org/docs/9.0/static/functions-matching.html因为使用波形符标记 JDBC 驱动程序不知道圆括号是否是普通字符(如我的情况)或用于模式匹配的分组符号,将哪些组项分组到一个逻辑项中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 JDBC 准备语句的字符串中的圆括号 的相关文章

  • Active MQ - HelloWorld 示例异常

    我正在尝试运行 hello world 示例在这里找到 http activemq apache org hello world html I added activemq all 5 5 1 jar已经到图书馆了 它构建成功 但出现以下警
  • Java Spark DataFrameReader java.lang.NegativeArraySizeException

    学习 Spark for java 并尝试阅读 csv文件为DataFrame使用DataFrameReader 甚至不能得到一个超级简单的 csv文件工作 因为我不断收到异常java lang NegativeArraySizeExcep
  • MediaPlayer.create() 始终返回 null

    我以前用过媒体播放器 从来没有遇到过这个问题 每当我尝试使用 MediaPlayer create 时 该方法都会给我 null 并且我无法播放声音 我有什么遗漏的吗 public class Game extends Activity p
  • 获取 SQL 表上未使用的唯一值

    我有一个表 其中有一列描述数字 ID 该 ID 对于所有行都是唯一的 但它不是主键 数字 ID 是有限的 假设答案可以是从 1 到 10 SELECT ID FROM TABLE ID 1 2 5 我必须 通过 UI 向用户呈现未使用的值
  • 在带有循环引用的表中插入 SQL

    我有 2 张桌子 Empleados numEmpl nombre apellido sexo telefono salario numDept Departamentos numDept nombreDept numDirect 在部门中
  • 获取SQL中前2个特殊字符之间的字符

    我有数据在sql 只是要注意 SQL STudio is the IDE like data a 10 b c a 1 b c 我想获取前两个符号之间的数据 Output 10 1 这就是我的方法 SELECT CAST
  • SwingWorker 在另一个 SwingWorker 的 did 方法中

    首先 我需要通知您 我正在尽最大努力学习如何用 Java 编写代码 虽然有点困难 但我相信我能做到 我过去提交了几个有关 SwingWorkers 等的问题 每一个我都以为我已经做到了 但后来发现我仍然需要学习 希望这一次不是那样的一次 话
  • org.apache.commons.codec.digest.Md5Crypt.md5Crypt 函数。 linux下出现异常,windows下正常

    我们正在使用commons codec加密密码 使用org apache commons codec digest Md5Crypt md5Crypt功能 在Windows环境下工作正常 但在CentOS上却抛出异常 我们有3台centOS
  • 为什么下面代码的输出是Thread[main,5,main]

    public class test1 public static void main String args TODO Auto generated method stub Thread t Thread currentThread Sys
  • 简单的t-sql而不是触发器

    任何人都可以帮助解决简单的 t sql 脚本与板载触发器的问题吗 我使用非常简单的触发器将数据从一个表复制到另一个表 这些表之间没有关系 当我尝试在触发器创建后 从同一脚本 直接第一次插入数据时 我得到了所需的结果 但所有接下来的尝试都会失
  • 反应式 Spring Webflux REST 控制器内部重定向

    我正在为 spring 反应项目创建简单的控制器服务器 在设置重定向到另一个位置时 我在调用时发现错误http localhost 8080 There was an unexpected error type Internal Serve
  • selenium webdriver 中的多个程序执行不起作用

    Selenium WebDriver 中的多个程序执行不起作用 我编写了 1 个 testNG xml 文件和 2 个 java 类 我尝试从 xml 文件运行这两个 java 类 但这不起作用 XML代码
  • 两条腿的 OAuth 和 Gmail Atom feed

    我们正在尝试让 2 legged OAuth 与 Gmail Atom feed 一起使用 我们使用 John Kristian Praveen Alavilli 和 Dirk Ba lfanz 贡献的 Java 库 http oauth
  • bufferedinputstream 中标记读取限制有什么用

    我是Java流的新手 我想读取特定的文件内容 然后需要从头开始读取 我创建了一个 BufferedInputStream 但我对 BufferedInputStream mark int markLimit 的文档感到困惑 文档说 publ
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 如何在Java中模拟引用传递?

    我是一个十足的 Java 菜鸟 我知道 Java 将所有参数视为按值传递 并且还有其他几个线程人们对此进行了解释 例如 在 C 中我可以这样做 void makeAThree int n n 3 int main int myInt 4 m
  • 如何列出hadoop hdfs中目录及其子目录中的所有文件

    我在 hdfs 中有一个文件夹 其中有两个子文件夹 每个子文件夹大约有 30 个子文件夹 最后 每个子文件夹都包含 xml 文件 我想列出所有 xml 文件 仅给出主文件夹的路径 在本地我可以这样做apache commons io 的 h
  • 如何使 JScrollPane 与嵌套 JPanel 一起正常工作?

    我正在使用 NetBeans 在 Java 中构建 Swing 应用程序 但我遇到布局问题 我的主框架包含一个JScrollPane其中包含一个JPanel called contentPanel其中又包含一个JPanel called l
  • 构造函数参数和属性一起出现在 bean 定义中

  • Java 可变 BigInteger 类

    我正在使用 BigIntegers 进行计算 该计算使用一个调用 multiply 大约 1000 亿次的循环 并且从 BigInteger 创建新对象使其非常慢 我希望有人编写或找到了 MutableBigInteger 类 我在 jav

随机推荐

  • javafx.scene.control.TableColumn 无法转换为 javafx.scene.control.TableColumn$CellDataFeatures

    我在填充 javafx tableview 时遇到问题 我目前正在开发一个基于 GUI 的事件管理工具 适用于大学 并且我一直在尝试填充 Tableview 列表 该列表应该位于边框窗格布局的中心 这是我的代码 它很长的想法 它的主窗口函数
  • C 中正弦函数的实现不起作用

    我尝试用 C 语言实现正弦函数 但得到了奇怪的结果 以下是我用来计算正弦的三个函数 define PI 3 14159265358979323846 define DEPTH 16 double sine long double long
  • 不支持混合类型

    请看一下下面的头文件 pragma once using namespace UsbLibrary ref class MissileLauncher public MissileLauncher void private Bytes us
  • 缩小名称和变量名称

    我知道缩小负责删除 空白字符 换行符 注释 有时还有块分隔符 不久前我读到它还负责缩短变量名称 但我一直认为这是混淆的一部分 我对吗 或者现在缩小库也包含这样的功能 好吧 由于缩小的目标是尽可能减少代码的大小 因此重命名变量是实现这一目标的
  • Angular CDK的OverlayModule,cdk-overlay-pane不会将位置设置为绝对?

    我正在使用 Angular 的 CDK 的 Overlay 模块 我只是找不到将position absolute添加到覆盖层的方法 该模块将收到一个top and a left与连接元素位置匹配的位置 但覆盖层不会接收到position
  • Pandas _metadata的DataFrame持久化错误

    我终于弄清楚如何使用 DataFrame 中的 metadata 一切正常 除了我无法将其持久化 例如 hdf5 或 json 我知道它有效 因为我复制框架 而 metadata 属性复制到 非 metadata 属性则不然 example
  • CakePHP-cakeDC搜索插件实现

    我目前正在尝试找出一种在我的应用程序中实现 cakeDC 搜索插件的方法 但我发现很难理解在我可以让它在我的应用程序中 很好地 工作之前需要完成的管道工作 需要考虑的事项 搜索必须是 实时搜索 检索到的记录需要分页 搜索将使用选定的条件 i
  • Fn 类型未实现 Size

    我想构建一个将列表分成两部分的函数 一个列表包含原始列表中满足特定谓词的元素 另一个列表包含所有不满足特定谓词的元素 以下是我的尝试 fn split filter
  • 除了 Hibernate Validator 的 @SafeHtml 之外,还有哪些替代方案来验证字符串?

    正如 JavaDocs 中所述 它将在未来版本中删除 是否有任何替代库可以通过注释类似地工作 让我们首先解释一下弃用的原因 由于这一限制 我们最近遇到了安全问题 CVE 这是由于我们实施中的一个错误 但它让我们意识到这是非常脆弱的 并且在安
  • Pandas:将列中的值与唯一值相加

    我有数据框 ID time coeff category 111 12 1 5 shop 111 15 1 5 shop 222 12 0 8 shop 222 18 0 8 shop 我需要得到 category unique users
  • Web 应用程序 - 显示月份中日期的滑块功能

    对于学校项目 我们必须构建一个网络应用程序 我将创建一些东西 让人们可以跟踪他们的课程 家庭作业和空闲时间 计划表 日历 我在这里听起来真的很蹩脚 但是嘿 我累了 英语不是我的母语 我将在 CodeIgniter 中处理 PHP 逻辑 并结
  • ssh2节点js sftp协议错误握手失败

    你好 我有一个小问题 我开发了一个带有节点js的脚本sftp客户端 它连接到sftp服务器并抓取一些文件 我用本地服务器测试了它的工作 但是当我尝试将它与生产服务器一起使用时 我收到了这个错误 错误 握手失败 没有匹配的密钥交换算法 我已经
  • 无法联系到会员

    这是我用于显示角色成员的代码 但是 当我为有很多成员的角色调用此命令时 它只返回我的名字 我该如何修复它 V12 let role if message mentions roles first message guild roles ca
  • 使用升压条件变量

    我正在设计一个异步记录器类 如下所示 但是 不确定我是否以正确的方式使用升压条件变量 有人可以对此发表评论吗 这里的processLogEntry方法是一个线程函数 我在这里使用boost void LogWriter stopThread
  • 当我更新我的 sqlite 核心数据存储时,如何避免出现“SQL 执行期间错误:约束失败”?

    我们的应用程序允许用户从 API 提供的列表中选择位置 该列表很少更新 并且仅通过添加项目来更新 因此应用程序不会每次都访问 API 而是在 Core Data sqlite 存储中提供快照 我们希望它定期更新列表 执行此操作的代码如下所示
  • gcc 不匹配标签选项给出“无法识别的命令行选项”

    我试图激活该选项 Wmismatched tags在 gcc 上 检测不一致的类 结构声明 这可能在使用前向声明时发生 但在 Ubuntu 上我得到 c error unrecognized command line option Wmis
  • “替换”功能示例

    我没有找到该项目的帮助页面replace函数从base包很helpful 最糟糕的是 它没有可以帮助理解其工作原理的示例 您能解释一下如何使用它吗 举一两个例子就太好了 如果您查看该函数 通过在控制台中输入其名称 您会发现它只是一个简单的函
  • 我想仅为特定资源运行 terraform

    运行 terraform 并等待需要很长时间 所以我想运行它来排除执行时间最长的rds 或者我只想运行 ec2 资源 有没有办法在地形中做这样的事情 您可以使用 target resource https www terraform io
  • 为什么 DirectFB 没有在 GNU/Linux 中得到更广泛的应用?是否存在 X11 中不存在的严重限制?

    据我了解 DirectFB为多种显卡提供硬件加速 此外 它比 X11 更小 更快 并且占用的内存更少 那么 为什么它没有比现在更主流呢 我真正不确定的是 常见的 GTK Qt 程序是否需要移植到它 在 DirectFB 网站上 有一个将 F
  • 带有 JDBC 准备语句的字符串中的圆括号

    这是我的 Java JDBC 代码 例如修改和简化的 ps connection prepareStatement SELECT a b c FROM mytable WHERE category ps setString 1 my sup