* 如何比较UnitsInStock的数量与用户想要购买的数量? *
这里我查询了我的SQL数据库,了解放入DataSet的列列表。 "其中"子句是我当前正在浏览的项目,提取有关此产品的所有当前信息。
我尝试使用将数据输出到数据列中,然后我现在需要将其与int,quantity进行比较。
string selectionString =
"SELECT Products.ProductID, " +
"Products.ProductName, Categories.CategoryName, " +
"Suppliers.CompanyName, Products.QuantityPerUnit," +
"Products.UnitPrice, Products.UnitsInStock " +
"FROM Suppliers INNER JOIN (Categories " +
"INNER JOIN Products ON " +
"Categories.CategoryID = Products.CategoryID) " +
"ON Suppliers.SupplierID = Products.SupplierID " +
"WHERE Products.ProductID = " +
int.Parse(Session["Current Item"].ToString());
DataSet ds = new DataSet();//this is the dataset that keeps my columns and rows.
然后我有一个循环将除了最后一个列之外的所有列(即UnitsInStock)分配给文本框。 我需要使用的值是int,quantity。
根据用户打开的项目,每个项目的库存会有所不同。所以我打开的项目,我想知道如何比较用户决定的变量数量与我从DataSet中提取的数量。
UnitsInStock列的索引是 6 。不要担心QuantityPerUnit,它什么都不是。
以下是采用ProductName,CatergoryName,CompanyName,QuantityPerUnit,UnitPrice和 UnitsInStock 的代码,因此您可以查看数据集的使用方式。
if (ds.Tables[0].Columns.Count != 0 &&
ds.Tables[0].Rows.Count != 0)
{
for (int index = 0; index < ds.Tables[0].Columns.Count - 1; index++)/// count -1, explain
{
labelArray[index].Text = ds.Tables[0].Columns[index].ColumnName;//named constant
if (index == 5) // The price field
{
textBoxArray[index].Text = ((Decimal)ds.Tables[0].Rows[0][index]).ToString("F");
}
else
textBoxArray[index].Text = ds.Tables[0].Rows[0][index].ToString();
那么,如何将数据库检索的数量与用户想要购买的数量进行比较,从文本框中收集。
答案 0 :(得分:0)
我想你想过滤用户给出的数量的行。 以下代码仅选择那些包含UnitsInStock的行等于用户给出的数量。
我假设用户提供的数量存储在txtQuantityGivenByUser文本框中。
var selectedRows = ds.Tables[0].Select("UnitsInStock = " + txtQuantityGivenByUser.Text);
答案 1 :(得分:0)
在现有代码中比较它们的最简单方法是if (index ==
循环中的另一个for
语句:
if (index == 6)
{
int qtyUserWants = int.Parse(qtyUserWantsTextbox.Text);
int qtyInStock = (int)ds.Tables[0].Rows[0][index];
if (qtyUserWants > qtyInStock)
{
// do something
}