我可是森森呢 2023-03-20 15:55 采纳率: 96.3%
浏览 20
已结题

C# SqlDataAdapter的Update报错问题

我想对数据库中的2行进行一个位置的交换,使用Update提交整表的方式
测试表:ID(非自增主键),Name(内容)
表内已有1条数据:001,name1
操作:查询出表内数据,然后对DataTable进行删除,然后新增操作(这个方法试过,单独删除、新增都没问题)
实际提交我发现并没有先执行删除操作。我把主键删除后,发现只插入了没删除。
这是个什么情况,使用SqlDataAdapter进行Update操作只能执行一种逻辑吗


            DataTable dt = new DataTable();
            //DataTable数据是查出来的
            //删除第0行,0行数据001,name1,001所在列是非自增主键
            dt.Rows[0].Delete();
            DataRow row = dt.NewRow();
            row[0] = "001";//赋值为刚才删除的主键值
            dt.Rows.InsertAt(row, 0);

            SqlConnection con = new SqlConnection("");
            SqlDataAdapter adp = new SqlDataAdapter("select * from 测试表", con);
            new SqlCommandBuilder(adp);
            //对dt进行更新
            adp.Update(dt);//dt上面先删除一行,然后新增一行
            //报错:主键重复,尝试:删除主键发现,delete的行并没有删除
  • 写回答

3条回答 默认 最新

  • 於黾 2023-03-20 16:05
    关注

    Update的时候会循环执行,而你用insert把新行放到了第0行的位置上,所以会先执行insert后执行delete
    而insert报错了所以delete也 没有执行

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月20日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。