2013-07-19 23 views
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), 
', 

我的理解是,这是不缺乏逃避charecters造成的,而是由于使用条件运算符。

感谢您的帮助!

回答

5

这是因为operator precedence,加()到您的三元运营商,也将努力:

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

Basicaly它会首先连接字符串(+),然后评估条件语句(?:),但是你指望它对。括号将修复它。

作为一个侧面说明:它会是更好地使用参数化查询。