在我的数据库表格中,我有两列:pagename
和pageinfo
。我希望在传入pagename
时检索数据。我使用的是今天从Stackoverflow获得的代码,但是代码中的一些问题会引发错误:
System.Data.dll中发生了'System.InvalidOperationException'类型的异常,但未在用户代码中处理。附加信息:没有数据时读取的尝试无效。)
这是代码:
public string GetPageInfo(string filenames)
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=.;Integrated Security=True");
con.Open();
SqlCommand command = new SqlCommand("Select pageinfo from T_Pages where pagename=@filenames", con);
command.Parameters.AddWithValue("@filenames", filenames);
// int result = command.ExecuteNonQuery();
using (SqlDataReader reader = command.ExecuteReader())
{
return reader["pageinfo"].ToString(); ;
}
// return string GetPageInfo;
}
答案 0 :(得分:2)
这是因为:
return reader["pageinfo"].ToString();
如果 reader [“pageinfo”] 为null,则 ToString()将引发异常。
将以上行替换为:
if(reader["pageinfo"] != null)
{
return reader["pageinfo"].ToString();
}
else
{
return "";
}
或使用Null-conditional Operators:
return reader["pageinfo"]?.ToString();
修改强>
您还需要在返回之前添加 Read():
reader.Read();
return reader["pageinfo"]?.ToString();