1

OS言語とは異なる照合でOracleデータベースを使用しています。ODBCドライバーを使用してデータベースにアクセスしています。DBの照合でサポートされている特殊な非ASCII文字を含むステートメント(たとえば、「select * from x where =?」)を準備すると、その文字を含むデータ行が見つかります。SQL文字列の引数を使用してselectを直接実行すると、データ行が見つかりません。

4

1 に答える 1

1

私の推測ですが、クライアント コンピューターが、引数が正しく書き込まれた SQL 文字列をエンコードしていないことが原因である可能性があります。クライアントがDB照合とは異なる地域設定に設定されている場合、Oracleに送信されるselectステートメントを含む文字配列には、元のファンキーな文字が配置されていた場所に「正しくない」バイトが含まれると思います-Oracleはこれらをいくつかの最初に送信した文字以外の文字 (行が見つからない原因)。

パラメータ化されたアプローチを使用できない理由はありますか (正しく機能しているため)。

于 2008-10-20T13:11:12.843 に答える