0

MYSQL を使用して Java でファイルを作成しているときに、奇妙な問題に直面しています。

私のコード:

String lChildSql = this.lSQLBucket.select("get.child.by.name")
                        .replace("LEFT").with(lLeft)
                        .replace("RIGHT").with(lRight)
                        .replace("LEVEL").with(lLevel + 1)
                        .replace("NAME").with(pName).get()
                    ResultSet lChildRs = lDB.Qry(lChildSql);

サンプル: pName raj'sek'har でファイルを作成すると、自動的に raj"sek"har として作成されます。

この問題を解決するのを手伝ってください。

よろしく、

ラージ

4

1 に答える 1

1

ユーザー不明が言っているのは、これは正常な動作であるということです。これは、SQL が単語内の一重引用符 (アポストロフィ) を処理する方法です。

SQLは文字列に一重引用符を使用しますが、文字列'this is a string'に一重引用符が含まれていると問題が発生します--'this isn't going to work'文字列が「早く終了する」ためです。

そのため、SQL が行うことは、それを 2 つの単一のアポストロフィに置き換えることです。これは、実際には単一のアポストロフィ [sic] が必要であることを示す「エスケープ シーケンス」です'this''ll work fine'

これは表示用であることに注意してください。「実際に」何かを置き換えるわけではありません。データを取得すると、すべてがうまくいきます。

別の人が同じことを言っている

于 2012-03-13T12:05:37.493 に答える