在JDBC PreparedStatement参数中转义两个单引号

我正在尝试将值插入到Oracle 10g数据库表中。 我想为FirstName列插入值,并且值有两个单引号,如: O'Rielly's Edition

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

但是当我使用两个单引号时,它会给ORA-00907: missing right parenthesis提供SQL错误ORA-00907: missing right parenthesis 。 有关如何处理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:缺少右括号 n

使用上面的代码,我正在解决这个问题。


尝试改变

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

int iCount = pstmt.executeUpdate();
链接地址: http://www.djcxy.com/p/27829.html

上一篇: Escaping two single quotes in JDBC PreparedStatement parameter

下一篇: How can I get the SQL of a PreparedStatement?