Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转义JDBC PreparedStatement参数中的两个单引号_Java_Database_Oracle_Jdbc_Prepared Statement - Fatal编程技术网

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

Java 转义JDBC PreparedStatement参数中的两个单引号,java,database,oracle,jdbc,prepared-statement,Java,Database,Oracle,Jdbc,Prepared Statement,我正在尝试将值插入到Oracle 10g数据库表中。我想为列FirstName插入值,该值有两个单引号,如下所示: 奥列利的版本 我使用JDBC的prepared语句传递参数FirstName的值。只需一个报价就可以了(O'Rielly) 但当我使用两个单引号时,它给出的SQL错误是ORA-00907:缺少右括号。关于如何处理PreparedStatement中的两个单引号,有什么建议吗? 我的问题如下: StringBuffer strUpdateUserQuery = new StringB

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

我使用JDBC的prepared语句传递参数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:缺少右括号\n

使用上面的代码,我得到了问题。

尝试更改

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


显示一个使用preparedStatement尝试插入内容的示例。绑定值中不需要转义单引号。请编辑您的问题,以显示您正在使用的实际准备的陈述。(我想,这个值和它的边界完全一样)。返回的完整错误是什么?PreparedStatement的一个重要优点是您不必担心转义。听起来好像您没有正确使用PreparedStatement。您的问题并添加您正在使用的代码。不要在注释中发布代码。@user75ponic-*8-)我看不出出现此错误的原因。你真的确定是从这里来的吗?
int iCount = pstmt.executeUpdate();