2017-06-19 12 views
2

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問題が発生しています。

+0

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

を変更してみてくださいあなたはPreparedStatementを使用して挿入しようとしているものの例を表示します。 – user75ponic

+3

バインド値でシングルクォートをエスケープする必要はありません。質問を編集して、使用している実際の準備文を表示してください。 (そして値は、まさにそれが縛られていると思います)。あなたが戻ってくる完全なエラーは何ですか? –

+3

PreparedStatementの重要な利点の1つは、エスケープについて心配する必要がないという事実です。 PreparedStatementを正しく使用していないかのように聞こえます。 ** [編集] **あなたの質問とあなたが使用しているコードを追加してください。コメントは** **投稿コードではありません。 –

答えて

1

int iCount = pstmt.executeUpdate(); 
+0

上記の解決策で同じエラーが発生しています。 –

関連する問題