[英]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;
}
檢查數據表是否為空
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);
}
}
檢查datarows.count
是否為null
...
同樣在DB_Get_All_MenuItems()
提到dbconnction
字符串、sql 命令類型和 datareader 以及所有...首先確保數據在此函數中返回 o/p....
您正在嘗試使用空值。 這意味着您要么將其設置為 null,要么根本不將其設置為任何內容。 現在,您可以在每個找到的位置放置一個斷點,並在連接調試器的情況下運行您的程序。 每次調試器在這樣的斷點處中斷時,您都需要確定您是否希望引用為非空。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.