1

MySql.data.dll を使用して、フレームワークのデータベース層を SQLServer から MySQL に移行しようとしています。MySQL で次の生成されたクエリがあります。

select * from `user` where `user_domainname` = 'domain\beth';

MySQL は上記の文字列の '\b' をベル文字として解釈しますが、SqlServer はそのようなエスケープ文字を解釈しません。MySQLでのこれに対する解決策 -

select * from `user` where `user_domainname` = 'domain\\beth';

C# でこれを行うには、すべての \b またはその他のそのような文字を \b に置き換える必要があります。これは、最終的に実行するそのような変換の数を考慮すると、非常に現実的なオプションではありません。

だから私の質問は - データベースレベルでそのような特殊文字を解釈することを避けるために、MySQL にオプションはありますか? そうでない場合、そのような変換を実行するために使用できる API はありません。MySqlHelper クラスを調べましたが、有用なものは見つかりませんでした。

前もってありがとう、
バーラト

4

1 に答える 1

3

MySQL 5.0.1 から、NO_BACKSLASH_ESCAPESを設定してバックスラッシュをさらに別の通常の文字に変えることができます。ただし、他の場所でバックスラッシュに頼らないようにしてください。

ライブサーバーでこれを行うには (再起動するまで):

SET GLOBAL sql_mode='NO_BACKSLASH_ESCAPES';

次回の起動時に有効になるように、MySQL 構成ファイル (my.cnf または my.ini) に忘れずに追加してください。行を追加

sql-mode=NO_BACKSLASH_ESCAPE
于 2010-06-23T04:48:43.513 に答える