运行foreach循环后。我在第二项上得到NullReferenceException,因为查询结果为null。但我有更多的项目在同一个查询上使用,并在richTextBox1上获得结果。如果有任何null结果,我可以继续foreach循环。
foreach (string Items in listBox4.Items)
{
using (OracleCommand crtCommand = new OracleCommand("select REGEXP_REPLACE(dbms_metadata.get_ddl('TABLE','" + Items + "'),('" + txtSrcUserID.Text + "...'),'', 1, 0, 'i') from dual", conn1))
{
richTextBox1.AppendText(Environment.NewLine);
richTextBox1.AppendText(crtCommand.ExecuteScalar().ToString() + ";");
richTextBox1.AppendText(Environment.NewLine);
}
}
答案 0 :(得分:0)
将crtCommand.ExecuteScalar().ToString()
更改为(crtCommand.ExecuteScalar() ?? string.Empty).ToString()
。这在逻辑上等同于:
object dbResult = crtCommand.ExecuteScalar();
if(dbResult == null)
{
richTextBox1.AppendText(";");
}
else
{
richTextBox1.AppendText(dbResult.ToString() + ";");
}
如果要完全忽略null结果而不是将其视为空字符串,请使用@ SimonWhitehead的代码
答案 1 :(得分:0)
这是危险的编程。你真的应该检查null
。假设你的循环会变得更大..我会包含一个continue
并让你更清楚你正在为可读性做些什么。如果您不需要,请省略continue
。
var result = crtCommand.ExecuteScalar();
if (result != null) {
richTextBox1.AppendText(Environment.NewLine);
richTextBox1.AppendText(result.ToString() + ";");
richTextBox1.AppendText(Environment.NewLine);
}
else {
continue;
}
// any other code here.