我正在尝试用数据库中的数据填充列表视图,但是在加载列表视图时出现空引用异常。我正在使用MVC模式。
我的数据访问权限层中的代码:
SELECT s.zone,
min(o.price
* CASE o.currency
WHEN 'EUR' THEN
1
WHEN 'USD' THEN
.9
END),
max(o.price
* CASE o.currency
WHEN 'EUR' THEN
1
WHEN 'USD' THEN
.9
END)
FROM offer o
INNER JOIN space s
ON s.id_space = o.id_space
WHERE s.type = 11
AND o.sell = 'N'
GROUP BY s.zone;
我已经检查过,并且我的SQL参数都拼写正确
确切的错误是:datatable.rows ='datatable.rows'引发了'system.nullreferenceexception'类型的异常
我的DateTable方法看起来像这样
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;
}
答案 0 :(得分:1)
检查dataTable是否为空
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);
}
}
答案 1 :(得分:0)
您正在尝试使用空值。这意味着您要么将其设置为null,要么根本不将其设置为任何东西。 现在,您可以在找到的每个位置放置一个断点,并在连接调试器的情况下运行程序。调试器每次在这样的 breakpoint 处中断时,您需要确定您是否希望引用为非null。
答案 2 :(得分:0)
检查datarows.count
是否为null
...
还在DB_Get_All_MenuItems()
中提到dbconnction
字符串,sql命令类型和datareader等所有...首先确保该函数o / p返回数据。...