首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

:添加数据重复则Update的有关问题

2012-03-09 
求助:添加数据重复则Update的问题这是向DB中添加数据, 但是我想在添加之前根据ID和ParentGroups判断, 如果

求助:添加数据重复则Update的问题
这是向DB中添加数据, 但是我想在添加之前根据ID和ParentGroups判断, 如果ID没有重复则添加, 而重复了则判断ParentGroups是否和DB中一样, 如果不一样则只update ParentGroups.
但是用下面这个方法我不知道如何修改.请大侠帮帮忙。

C# code
private const string SQL_GROUP_SELECT =            @"      SELECT  [Id],[name],[description],[groupType],[owner],[coowner],                            [CreatedDate],[ChangedDate],[IsGSSGroup],                            [AutoAcceptOUChange],[CompanyCode],[AutoExpiredDate],[ParentGroups]                    FROM    [Group]";        private const string DefaultTableName = "Pending_Group";private static void InitializeTable(string tableName)        {            PendingGroupTable.TableName = tableName;            PendingGroupTable.Columns.Add("ID", typeof(string));            PendingGroupTable.Columns.Add("Name", typeof(string));            PendingGroupTable.Columns.Add("Description", typeof(string));            PendingGroupTable.Columns.Add("GroupType", typeof(int));            PendingGroupTable.Columns.Add("Owner", typeof(string));            PendingGroupTable.Columns.Add("Coowner", typeof(string));            PendingGroupTable.Columns.Add("CreatedDate", typeof(DateTime));            PendingGroupTable.Columns.Add("ChangedDate", typeof(DateTime));            PendingGroupTable.Columns.Add("IsGSSGroup", typeof(bool));            PendingGroupTable.Columns.Add("AutoAcceptOUChange", typeof(bool));            PendingGroupTable.Columns.Add("CompanyCode", typeof(string));            PendingGroupTable.Columns.Add("AutoExpiredDate", typeof(DateTime));            PendingGroupTable.Columns.Add("ParentGroups", typeof(string));            PendingGroupTable.Columns.Add("ImportStatus", typeof(string));            PendingGroupTable.PrimaryKey = new[] { PendingGroupTable.Columns["ID"] };        }

C# code
private static void UpdateToDB()        {            try            {                var conn = new SqlConnection(ConnString.ConnectionString);                var daGroup = new SqlDataAdapter(SQL_GROUP_SELECT, conn)                {                    MissingSchemaAction = MissingSchemaAction.AddWithKey,                };                var scbGroup = new SqlCommandBuilder(daGroup);                DataTable dtTemp = PendingGroupTable.Clone();                foreach (DataRow dr in PendingGroupTable.Rows)                {                    if (!string.IsNullOrEmpty(dr["ImportStatus"].ToString()))                    {                        if (Equals(ImportStatus.Ready, Enum.Parse(typeof(ImportStatus), dr["ImportStatus"].ToString())))                        {                            int colCount = dtTemp.Columns.Count;                            DataRow drNew = dtTemp.NewRow();                            for (int i = 0; i < colCount - 1; i++)                            {                                drNew[i] = dr[i];                            }                            dtTemp.Rows.Add(drNew);                        }                    }                }                dtTemp.Columns.Remove("ImportStatus");                daGroup.Fill(dtTemp);                daGroup.Update(dtTemp);                //PendingGroupTable.AcceptChanges();                //return true;            }            catch (Exception)            {                //return false;            }            pendingGroupEmployees.Update();        }


[解决办法]
int Count=select Count(*) from Group where ID=@ID判断是否有该ID
if(Count >0 ){
int GroupCount=select Count(*) from Group where ParentGroups='ParentGroups'


if(GroupCount <= 0){
Update();
}
}else{
add();
}
[解决办法]

探讨
int Count=select Count(*) from Group where ID=@ID判断是否有该ID
if(Count >0 ){
int GroupCount=select Count(*) from Group where ParentGroups='ParentGroups'
if(GroupCount <= 0){
Update();
}
}else{
add(……

[解决办法]
定义好更新变量
根据判断来给每个更新变量赋值(根据判断给变量赋ParentGroups的 还是DB的)
然后按照正常 Update就行了。

热点排行