1

文字列内で条件演算子を使用するにはどうすればよいですか?

TO_DATE(この文字列の値と'一重引用符が欠落しているのはなぜですか? それを修正するにはどうすればよいですか?

StringBuilder sb = new StringBuilder();
//code...
sb.AppendLine("     '" + txtStatus.Text + "',");
sb.AppendLine("     TO_DATE(" + dtpEligDate.Value.ToString("yyyyMMddHHmmss") == "" ? "null" : dtpEligDate.Value.ToString() + "),");
sb.AppendLine("     '" + txtCoverageEndReason.Text == "" ? "null" : txtCoverageEndReason.Text + "',");
//code...

文字列値:

'',
7/19/2013 9:04:35 AM),
',

私の理解では、これはエスケープ文字の欠如が原因ではなく、条件演算子の使用が原因であるということです。

助けてくれてありがとう!

4

1 に答える 1

5

これは、演算子の優先順位のためです。三項演算子に追加()すると機能します。

sb.AppendLine("TO_DATE(" + 
    (dtpEligDate.Value.ToString("yyyyMMddHHmmss") == "" ? "null" : dtpEligDate.Value.ToString()) + 
"),");

基本的には、最初に文字列を連結し ( +)、次に条件ステートメントを評価します ( ?:) が、逆になると予想されます。括弧はそれを修正します。

補足として、パラメータ化されたクエリを使用することをお勧めします。

于 2013-07-19T16:21:37.430 に答える