如何从ASP.NET C中的DataSet中提取列和行#

时间:2012-10-25 01:48:18

标签: c# asp.net database dataset comparison

* 如何比较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();

那么,如何将数据库检索的数量与用户想要购买的数量进行比较,从文本框中收集。

2 个答案:

答案 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
    }