DataTable Rows Count Null Exception - PullRequest
       26

DataTable Rows Count Null Exception

0 голосов
/ 11 декабря 2019

Я пытаюсь заполнить просмотр списка данными из моей базы данных, но при загрузке просмотра списка получаю исключение нулевой ссылки. Я использую шаблон 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;
        }

Ответы [ 2 ]

0 голосов
/ 11 декабря 2019

проверьте, является ли datarows.count null или нет ...

Также в DB_Get_All_MenuItems() упоминается dbconnction строка, тип команды sql, и datareader и все ... сначала убедитесь, чтоданные возвращаются в этой функции o / p ....

0 голосов
/ 11 декабря 2019

Вы пытаетесь использовать что-то, что является нулевым. Это означает, что вы либо устанавливаете его на ноль, либо никогда вообще ничего не устанавливаете. Теперь вы можете поместить точку останова в каждом найденном месте и запустить вашу программу с подключенным отладчиком. Каждый раз, когда отладчик останавливается на такой точке останова , вам необходимо определить, ожидаете ли вы, что ссылка будет ненулевой.

...