Я открываю запрос базы данных из базы данных Northwind для каждого элемента, связанного с моей покупкой. Он должен принять ProductID
и UnitsInStock
из таблицы Products
. После того, как я выберу два столбца из базы данных, чтобы сохранить данные в DataTabel ds
. Затем я сравниваю, чтобы убедиться, что введенное количество введено меньше, чем единицы столбца в запасе в базе данных.Почему я получаю исключение NullReferenceException в DataSet?
theCart.Values
является частью ICollections.
Я получаю ошибку: из моего сообщения об исключении: «Не удалось подключиться к базе данных: ссылка на объект не установлена в экземпляр объекта».
Вот код.
DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection((string)Application["DBConnectionString"]);
foreach (OrderItem item in theCart.Values)
{
string selectionString =
"SELECT Products.ProductID, Products.UnitsInStock " +
"FROM Products" +
"WHERE Products.ProductID = " + item.ProductID + ";";
try
{
OleDbCommand cm = new OleDbCommand(selectionString, conn);
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = cm;
da.Fill(ds);
da.Dispose();
if (ds.Tables["Products"].Columns.Count != 0 &&
ds.Tables["Products"].Rows.Count != 0)
{
for (int index = 0; index < ds.Tables["Products"].Rows.Count; index++)
{
if (item.ProductID == int.Parse(ds.Tables["Products"].Rows[index][indexOfProductID].ToString()))
{
if (item.QuantityOrdered > int.Parse(ds.Tables["Products"].Rows[index][indexOfUnitsInStock].ToString()))
{
hasStock = false;
int inStock = int.Parse(ds.Tables["Products"].Rows[index][indexOfUnitsInStock].ToString());
txtUnderstockedItems.Text += "Sorry we do not have enough stock of item: " + item.ProductName +
"<br> Currently, " + item.ProductName + " (ID:" + item.ProductID + ") has " + inStock + " in stock.";
}
else
{//can output how many items in stock here.
hasStock = true;
}
}
}
}
catch (Exception ex)
{
txtUnderstockedItems.Text = "There was a problem connecting to the database: " + ex.Message;
}
finally
{
conn.Close();
}
}
}
Справа от него находится нуль – GivenPie
. Я поставлю редактирование с помощью правильного оператора if. – evanmcdonnal
Я не запускал его раньше, потому что я закрыл свою базу данных, а затем выполнил оператор if. Теперь я могу запустить мой оператор if после того, как поместил его в блок 'try'. – GivenPie