如何防止运行时重复记录

时间:2011-01-18 08:49:33

标签: c# asp.net

此代码会导致双重记录...... 我检查了所有表的插入代码,它工作正常......

这是插入代码:

        StoreDO store = new StoreDO();
        List<BrandDO> brandList = new BrandBL().SelectBrands();
        StoreBL storeBL = new StoreBL();

        store.StoreName = txtStoreName.Text;
        store.StorePhone = txtStorePhone.Text;
        store.StoreAddress = txtStoreAddress.Text;
        store.CityID = int.Parse(ddlCity.SelectedValue);
        store.CountyID = int.Parse(ddlCounty.SelectedValue);
        store.IsActive = chkIsActive.Checked;
        int storeID = storeBL.InsertStore(store);
        ContentPlaceHolder contentPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
        for (int i = 0; i < brandList.Count; i++) {
            string brandName = brandList[i].BrandName.ToString() + brandList[i].BrandID.ToString();
            StoreBrandBL storeBrandBL = new StoreBrandBL();
            CheckBox chkBrand = (CheckBox)contentPlaceHolder.FindControl(brandName);
            if (chkBrand != null) {
                if (chkBrand.Checked) {
                    StoreBrandDO storeBrandDO = new StoreBrandDO();
                    storeBrandDO.StoreID = storeID;
                    storeBrandDO.BrandID = brandList[i].BrandID;
                    storeBrandDO.IsActive = true;
                    storeBrandBL.InsertStoreBrand(storeBrandDO);
                }
            }
        }

1 个答案:

答案 0 :(得分:1)

应避免在代码中复制数据库中的行,并在数据库中对其进行保护。

由于hwcverwe表示您可以使用表约束,但您还应该尝试为每个表正确设置主键。

如果您在所有表上使用代理键(例如我在代码中看到的StoreIDBrandID),那么您将不得不使用唯一表约束来防止重复数据。正确配置数据库也会显示代码中的问题区域,因为数据库在插入失败时会抛出异常。

编辑:如果您询问CheckBox控件,在回复您的评论时,您的问题标题不正确。

查看代码时,您正试图在ContentPlaceholder中找到一个复选框控件,但是您没有显示创建复选框的代码。