2009-06-03 11 views
0

私はdatacontent.executeCommand( "string")をC#で実行しようとしています。私が挿入をしようとしているとき、私は問題を抱えています。なぜなら、エントリに「単語」があると私はそれが新しい列だと思うからです。例外がスローされます。正規表現C#

'word'をどのように''word''に変換しますか?

+0

は、より多くのニーズ:私は正しくQを理解していないと「単語」の唯一のインスタンスは、あなたが行うことができますが、変更する必要がある場合にのみ、string.replace

string query; ... query.Replace("'", "''"); 

を行う必要がありますコンテキスト。あなたのコードを投稿してください。 – Juliet

答えて

1

\を使用してSQL文字列の文字をエスケープできます。しかし、私はあなたの問題(そしてあなたが最初からこのようにしないと後で実行する他の人たち)に最適なソリューションはSQLパラメータだと信じています。

0
私は、ユーザーが悪質なSQLを実行して、データベースをハイジャックすることができ、SQLインジェクション、の素晴らしい世界にあなたを歓迎したいと思い

によるあなたが任意の文字列;-)

あなたは本当にのものと同じように(パラメータを使用する必要がありますを実行する System.Data.SqlClient)、または生成されたLINQデータモデルオブジェクトを使用してそれらの値を設定し、変更を送信します。データアクセスレイヤーがあなたの値をエスケープし、DELETE * FROM IMPORT_TABLEのようなSQLステートメントを含むテキストを入力する可能性のあるユーザーから保護します。

1

TomasとJasonの提案によれば、これらの問題を回避するにはSQLParametersを使用することをお勧めします。

しかし、多くのコード変更が必要な場合、迅速な修正が必要な場合は、私は言うでしょう: これには正規表現は必要ありません。

query.Replace("'word'", "''word''"); 
+1

合意。私は何年もこれをやってきましたが、どこにでもあなたが自分のSQL文に文字列を注入していることを前提としていれば、手元の問題には完全に安全で十分です。 – harpo