Oracle 10gデータベーステーブルに値を挿入しようとしています。私は列の値を挿入したいと思います。値はで、値には次のような二重引用符があります。 O'Rielly's EditionJDBC PreparedStatementパラメータで2つの単一引用符をエスケープする
パラメータファーストネームの値を渡すために準備されたJDBCのステートメントを使用しています。 1つの単一引用符(O'Rielly)でうまくいきます。
しかし、2つの一重引用符を使用すると、SQLエラーはORA-00907: missing right parenthesis
となります。 PreparedStatementで2つの一重引用符を処理する方法に関する提案はありますか? 私のクエリは以下の通りです:
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は
が欠落し、I問題が発生しています。
に
を変更してみてくださいあなたはPreparedStatementを使用して挿入しようとしているものの例を表示します。 – user75ponic
バインド値でシングルクォートをエスケープする必要はありません。質問を編集して、使用している実際の準備文を表示してください。 (そして値は、まさにそれが縛られていると思います)。あなたが戻ってくる完全なエラーは何ですか? –
PreparedStatementの重要な利点の1つは、エスケープについて心配する必要がないという事実です。 PreparedStatementを正しく使用していないかのように聞こえます。 ** [編集] **あなたの質問とあなたが使用しているコードを追加してください。コメントは** **投稿コードではありません。 –