提问人:Marijn Ploeg 提问时间:12/11/2019 最后编辑:Marijn Ploeg 更新时间:12/11/2019 访问量:2409
DataTable Rows Count Null 异常
DataTable Rows Count Null Exception
问:
我试图用数据库中的数据填充列表视图,但在加载列表视图时出现空引用异常。我使用 MVC 模式。
我的数据访问层中的代码:
public List<Menu_Item> DB_Get_All_MenuItems()
{
string query = "SELECT * FROM [Menu_Items]";
SqlParameter[] sqlParameters = new SqlParameter[0];
return ReadTables(ExecuteSelectQuery(query, sqlParameters));
}
private List<Menu_Item> ReadTables(DataTable dataTable)
{
List<Menu_Item> menu_items = new List<Menu_Item>();
foreach (DataRow dr in dataTable.Rows)
{
Menu_Item menu_Item = new Menu_Item()
{
Menu_ID = (int)dr["Menu_ID"],
Naam = (string)dr["Naam"],
Prijs = (float)dr["Prijs"],
Voorraad = (int)dr["Voorraad"],
Categorie_ID = (int)dr["Catogorie_ID"]
};
menu_items.Add(menu_Item);
}
return menu_items;
}
我已经检查过了,我的 SQL 参数拼写都正确
确切的错误是:datatable.rows = 'datatable.rows' 抛出 'system.nullreferenceexception' 类型的异常
我的 DateTable 方法如下所示
protected DataTable ExecuteSelectQuery(string query, params SqlParameter[] sqlParameters)
{
SqlCommand command = new SqlCommand();
DataTable dataTable;
DataSet dataSet = new DataSet();
try
{
command.Connection = OpenConnection();
command.CommandText = query;
command.Parameters.AddRange(sqlParameters);
command.ExecuteNonQuery();
adapter.SelectCommand = command;
adapter.Fill(dataSet);
dataTable = dataSet.Tables[0];
}
catch (SqlException e)
{
return null;
throw new Exception(e.ToString());
}
finally
{
CloseConnection();
}
return dataTable;
}
答:
0赞
Developer
12/11/2019
#1
您正在尝试使用空值。这意味着您要么将其设置为 null,要么根本不将其设置为任何内容。 现在,您可以在每个找到的位置放置一个断点,并在附加调试器的情况下运行程序。每次调试器在此类断点中断时,都需要确定是否期望引用为非 null。
1赞
bimal george
12/11/2019
#2
检查dataTable是否为null
if(dataTable!=null && dataTable.Rows.Count > 0)
{
foreach (DataRow dr in dataTable.Rows)
{
Menu_Item menu_Item = new Menu_Item()
{
Menu_ID = (int)dr["Menu_ID"],
Naam = (string)dr["Naam"],
Prijs = (float)dr["Prijs"],
Voorraad = (int)dr["Voorraad"],
Categorie_ID = (int)dr["Catogorie_ID"]
};
menu_items.Add(menu_Item);
}
}
评论
0赞
Crowcoder
12/11/2019
我敢打赌,例外是接收到一个长度为零的数组。ExecuteSelectQuery
0赞
Marijn Ploeg
12/11/2019
我有一个带有 ExecuteSelectQuery 的基类,我将我的 DateTable 方法添加到上面的问题中
1赞
JJ Raj
12/11/2019
#3
检查是否是...datarows.count
null
此外,在提到字符串、sql 命令类型和 datareader 以及所有...首先确保数据在此函数 o/p 中返回。DB_Get_All_MenuItems()
dbconnction
评论