我试图在Oracle 10g数据库表中插入值。我想为列插入值,名字并且值有两个像这样的单引号: O'Rielly's Edition。在JDBC PreparedStatement参数中转义两个单引号
我正在使用JDBC的准备语句传递参数值名字。它用单引号(O'Rielly)正常工作。
但是,当我使用两个单引号它给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
有了上面的代码,我我正在解决这个问题。
+0
显示你正在尝试使用preparedStatement时插入什么的例子。 –
+3
您不需要在绑定值中转义单引号。请编辑您的问题以显示您正在使用的实际准备好的陈述。 (我想,这个价值正如它的约束)。什么是你回来的完整错误? –
+3
PreparedStatement的重要优点之一是您无需担心转义。这听起来好像你没有正确使用PreparedStatement。 ** [编辑] **您的问题,并添加您使用的代码。做**不**在评论中发布代码。 –