这可能会被标记为dublicate或被关闭,但我需要问。什么是非法的?
private void btnFind_Click(object sender, EventArgs e)
{
connection.Open();
OleDbCommand command1 = new OleDbCommand();
command1.Connection = connection;
command1.CommandText = "select antonym from antonymsdb where word ='" + txtWord.Text + "'";
string antonymdoc = command1.ExecuteScalar().ToString();
lblAntonym.Text = antonymdoc;
OleDbCommand command2 = new OleDbCommand();
command2.Connection = connection;
command2.CommandText = "select word from antonymsdb where antonym = '" + txtWord.Text + "'";
string antonymdocx = command2.ExecuteScalar().ToString();
lblAntonym.Text = antonymdocx;
connection.Close();
}
我正在尝试读取 word 和反义词这两列,并返回同一行的单词,只是不同的列。它一直显示错误,我尝试搜索互联网,但没有找到任何帮助......
答案 0 :(得分:1)
这是一个嫌疑人:
string antonymdoc = command1.ExecuteScalar().ToString();
如果查询没有返回任何记录,则ExecuteScalar
返回null。如果您尝试在null上调用.ToString()
,则会获得NullReferenceException
。
通常我会先查看结果,看看它是否为null,以便我知道它是否返回了结果。
如果你只想在没有结果的情况下得到一个空字符串
string antonymdoc = command1.ExecuteScalar()?.ToString() ?? string.Empty;
这是
的简写var output = command1.ExecuteScalar();
string antonymdoc = output != null ? output.ToString() : string.Empty;
这是
的简写var output = command1.ExecuteScalar();
string antonymdoc;
if(output!=null)
{
antonymdoc - output.ToString();
}
else
{
antonymdoc = string.Empty;
}