原文参考地址.
DAL用的是强类型的DataSet,原文中有一段这样的代码
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, true)]
 51    public bool AddProduct(string productName, int? supplierID, int? categoryID, string quantityPerUnit, 
 52                          decimal? unitPrice, short? unitsInStock, short? unitsOnOrder, short? reorderLevel, 
 53                          bool discontinued)
 54    {
 55        // 新建一个ProductRow实例
 56        Northwind.ProductsDataTable products = new Northwind.ProductsDataTable();
 57        Northwind.ProductsRow product = products.NewProductsRow();
 58
 59        product.ProductName = productName;
 60        if (supplierID == null) product.SetSupplierIDNull(); else product.SupplierID = supplierID.Value;
 61        if (categoryID == null) product.SetCategoryIDNull(); else product.CategoryID = categoryID.Value;
 62        if (quantityPerUnit == null) product.SetQuantityPerUnitNull(); else product.QuantityPerUnit = quantityPerUnit;
 63        if (unitPrice == null) product.SetUnitPriceNull(); else product.UnitPrice = unitPrice.Value;
 64        if (unitsInStock == null) product.SetUnitsInStockNull(); else product.UnitsInStock = unitsInStock.Value;
 65        if (unitsOnOrder == null) product.SetUnitsOnOrderNull(); else product.UnitsOnOrder = unitsOnOrder.Value;
 66        if (reorderLevel == null) product.SetReorderLevelNull(); else product.ReorderLevel = reorderLevel.Value;
 67        product.Discontinued = discontinued;
 68
 69        // 添加新产品
 70        products.AddProductsRow(product);
 71        int rowsAffected = Adapter.Update(products);
 72
 73        // 如果刚好新增了一条记录,则返回true,否则返回false
 74        return rowsAffected == 1;
 75    }如果我写成这样:
 51    public bool AddProduct(string productName, int? supplierID, int? categoryID, string quantityPerUnit, 
 52                          decimal? unitPrice, short? unitsInStock, short? unitsOnOrder, short? reorderLevel, 
 53                          bool discontinued)
 54    {
 71        int rowsAffected = Adapter.UpdateProducts(productName,supplierID等等);
 72
 73        // 如果刚好新增了一条记录,则返回true,否则返回false
 74        return rowsAffected == 1;
 75    }也一样能实现插入产品呀.为什么要写成上面那么麻烦?有什么分别?

解决方案 »

  1.   

    原文地址
    http://reeezak.cnblogs.com/archive/2006/06/24/434439.html
      

  2.   

    楼主的
     int rowsAffected = Adapter.UpdateProducts(productName,supplierID等等);
     72
     73        // 如果刚好新增了一条记录,则返回true,否则返回false
     74        return rowsAffected == 1;
    好像是更新的吧。这个我也在看,不就是Scott Mitchell的ASP.NET2.0教程中的吗?
      

  3.   

    l         AddProduct(productName, supplierID, categoryID, quantityPerUnit, unitPrice, unitsInStock, unitsOnOrder, reorderLevel, discontinued) – 向数据库中添加一条产品信息,并返回新添加的产品的ProductID l         UpdateProduct(productName, supplierID, categoryID, quantityPerUnit, unitPrice, unitsInStock, unitsOnOrder, reorderLevel, discontinued, productID) – 更新一个数据库中已经存在的产品,如果刚好更新了一条记录,则返回true,否则返回false
    这是两个不同的方法,楼主搞混了吧。
      

  4.   

    哦.写错了.
    第二种方法应该是
     int rowsAffected = Adapter.AddProduct(productName,supplierID等等);
      

  5.   

    第一种更强壮,因为它处理了对提交的数据进行必要的检测以及违反数据约束所引起的异常限制在BLL层里,不让它继续传入DAL
      

  6.   

    就这些吗?如果只是对数据进入必要的检测.我一般都是在表示层进行的.不合法的数据就不会传入BLL层了.