java - 转义 JDBCPreparedStatement 参数中的两个单引号

标签 java database oracle jdbc prepared-statement

我正在尝试将值插入到 Oracle 10g 数据库表中。我想为 FirstName 列插入值,并且值有两个单引号,如下所示: 奥里利版

我正在使用 JDBC 准备好的语句来传递参数 FirstName 的值。用一个单引号(O'Rielly)就可以正常工作。

但是当我使用两个单引号时,它会给出 SQL 错误:ORA-00907:缺少右括号。关于如何处理PreparedStatement中的两个单引号有什么建议吗? 我的查询如下:

StringBuffer strUpdateUserQuery = new StringBuffer("UPDATE USERS set FNAME = ? , LNAME = ?, USER_TIMEZONE = ?, CREATED_DATE = CURRENT_DATE, ACTIVE_STATUS = ?, APPROVAL_STATUS = ?,USER_GROUP_ID = ? where USER_ID = ?");

pstmt = conn.prepareStatement(strUpdateUserQuery.toString());
pstmt.setString(1, userVO.getFirstName());
pstmt.setString(2, userVO.getLastName());
pstmt.setString(3, userVO.getStrTimeZone());
pstmt.setString(4, userVO.getStatus());
pstmt.setString(5, userVO.getStrAppStatus());
pstmt.setInt(6, Integer.parseInt(userVO.getUserGroupId()));
pstmt.setString(7, userVO.getUserId());

int iCount = pstmt.executeUpdate(strUpdateUserQuery.toString());

我收到的错误如下:

ORA-00907: missing right parenthesis\n

通过上面的代码,我遇到了问题。

最佳答案

尝试改变

int iCount = pstmt.executeUpdate(strUpdateUserQuery.toString());

int iCount = pstmt.executeUpdate();

关于java - 转义 JDBCPreparedStatement 参数中的两个单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44628451/

相关文章:

java - 重载 indexOf

java - 找不到类 com/google/common/util/concurrent/FutureFallback

用于创建范围的 SQL case 表达式

wpf - 我应该使用 XML 文件还是数据库?

oracle - Toad 格式化 : is it possibile to eliminate this statement?/* 格式化于 17/10/2012 12 :33:19 (QP5 v5. 185.11230.41888) */

java - 测试私有(private)方法时不加载配置值

java - Red5 屏幕共享在 Ubuntu 中不起作用

SQL 'arrays' 重复使用 IN 比较

sql - oracle解码的查找表?

Java - 如何使用自定义类型调用 oracle 过程?