代码-当传递具有已修改行的datarow集合时,更新时要求有效的insertCommand

问题描述

当传递具有已修改行的datarow集合时,更新时要求有效的insertCommand

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DataGridViewTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.dataGridView1.AllowUserToDeleteRows = true;
}

    private void Form1_Load(object sender, EventArgs e)
    {
        // TODO: 这行代码将数据加载到表“tempdbDataSet.Class1”中。您可以根据需要移动或移除它。
        this.class1TableAdapter.Fill(this.tempdbDataSet.Class1);

    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.sqlDataAdapter1.Update(this.tempdbDataSet);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        foreach (DataGridViewRow r in dataGridView1.SelectedRows)
        {
            dataGridView1.Rows.Remove(r);
        }
    }
}

}

点击按钮更新,也就是button1_Click的时候就会报这个错。insert 和delete都不行,要怎么解决?

解决方案

“当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand”错误解决
当传递具有已修改行的DataRow 集合时,更新要求有效的UpdateCommand?[原]
当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand问题解决

解决方案二:

刚回答了一个一模一样的!呵呵缘分吧!
Code如下:我得这个是整张表批量更新;

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace UseUpdate
{
    public partial class Frm_Main : Form
    {
        public Frm_Main()
        {
            InitializeComponent();
        }

        private DataSet G_st = new DataSet();//声明表字段

        private void Frm_Main_Load(object sender, EventArgs e)
        {
            G_st.Tables.Add(new DataTable());
            GetMessage();//填充表
            dgv_Message.DataSource = G_st.Tables[0];//设置数据源
            dgv_Message.Columns[0].Visible = false;//隐藏主键列
        }

        private void btn_Submit_Click(object sender, EventArgs e)
        {
            SqlDataAdapter P_SqlDataAdapter = new SqlDataAdapter();//创建数据适配器
            SqlCommand P_cmd = new SqlCommand(@"UPDATE [dbo].[备品] SET MPN=@MPN,品牌=@品牌,结存数量=@结存数量,货位号=@货位号 WHERE ID=@ID", new SqlConnection(@"server=192.168.60.18;database=浙江先芯科技;uid=sa;pwd=lierda"));
            P_cmd.Parameters.Add("@ID", SqlDbType.Int, 10, "ID");//设置参数
            P_cmd.Parameters.Add("@MPN", SqlDbType.NVarChar, 10, "MPN");//设置参数
            P_cmd.Parameters.Add("@品牌", SqlDbType.NVarChar, 10, "品牌");//设置参数
            P_cmd.Parameters.Add("@结存数量", SqlDbType.Int, 10, "结存数量");//设置参数
            P_cmd.Parameters.Add("@货位号", SqlDbType.NVarChar, 10, "货位号");//设置参数
            P_SqlDataAdapter.UpdateCommand = P_cmd;//设置UpdateCommand属性
            P_SqlDataAdapter.Update(G_st.Tables[0]);//更新数据库中数据
            G_st.AcceptChanges();//提交修改
            MessageBox.Show("更改成功!","提示!");//弹出消息对话框
            GetMessage();//填充表
            dgv_Message.DataSource = G_st.Tables[0];//设置数据源
        }

        /// <summary>
        /// 查询数据库信息
        /// </summary>
        /// <returns>方法返回DataTable对象</returns>
        private void GetMessage()
        {
            G_st.Tables[0].Clear();
            string P_Str_ConnectionStr = string.Format(@"server=192.168.60.18;database=浙江先芯科技;uid=sa;pwd=lierda");
            string P_Str_SqlStr = string.Format("SELECT [MPN],[品牌],[结存数量],[货位号],[ID] FROM [dbo].[备品]");
            SqlDataAdapter P_SqlDataAdapter = new SqlDataAdapter(//创建数据适配器
                P_Str_SqlStr, P_Str_ConnectionStr);
            P_SqlDataAdapter.Fill(G_st.Tables[0]);//填充数据表
        }

        private void dgv_Message_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            G_st.Tables[0].Rows[e.RowIndex][e.ColumnIndex] =dgv_Message.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
        }

    }
}

时间: 2024-08-04 12:04:15

代码-当传递具有已修改行的datarow集合时,更新时要求有效的insertCommand的相关文章

阅读优秀代码是提高开发人员修为的一种捷径

导读:原文作者Alan Skorkin是一名软件开发人员,他在博客<Why I Love Reading Other People's Code And You Should Too>中分享对软件开发相关的心得.Alan认为:阅读优秀代码是提高开发人员修为的一种捷径.以下是全文: 我突然想起来,很多程序员都讨厌阅读代码.来吧,承认吧! 每个人都喜欢编写代码,编代码是件趣事. 另一方面,阅读代码也不容易. 不仅不容易(编注:参见<微软资深软件工程师:阅读代码不容易>),而且还非常枯燥

编写高质量代码改善C#程序的157个建议[泛型集合、选择集合、集合的安全]

原文:编写高质量代码改善C#程序的157个建议[泛型集合.选择集合.集合的安全] 前言   软件开发过程中,不可避免会用到集合,C#中的集合表现为数组和若干集合类.不管是数组还是集合类,它们都有各自的优缺点.如何使用好集合是我们在开发过程中必须掌握的技巧.不要小看这些技巧,一旦在开发中使用了错误的集合或针对集合的方法,应用程序将会背离你的预想而运行. 本文已更新至http://www.cnblogs.com/aehyok/p/3624579.html .本文主要学习记录以下内容: 建议20.使用

最大加1-关于已知最大为99,怎么批量更新下面的100,101,111的问题

问题描述 关于已知最大为99,怎么批量更新下面的100,101,111的问题 想修改数据,比如说将单据时间修改为2015-9-21,那么单号也得随之改变,大概格式为DH年月+四位数,如果当月超出四位数那么变为五位数,反正就取当月单号最大的+1,最要紧的是怎么去实现批量更新? 如果我要修改DH2014070008 日期为2013-03-01 那么单号要修改为DH2013030001, 如果这样直接更新上去,肯定会报错,因为单号是主键,只能取当月最大的单号+1 我要实现的是批量的更新,比如二楼贴的图

为什么我的代码老是报该行已存在另一张表中

问题描述 //开始答题DataSetdatti2=newDataSet();//声明一个数据集//此处省略了获得表0的过程foreach(ListViewItemoneinlistView1.Items){//根据选中的数据文件,加载数据//datti2.ReadXmlSchema(one.SubItems[1].Text);datti2.ReadXml(one.SubItems[1].Text);datti2.Tables.Add("临时表");//datti2.Tables[1].

导入环信Demo的一些代码后,程序已启动就崩溃

问题描述 大神,您好!环信初始化不成功,导致程序崩溃,现在很急.请问怎么解决!!! 解决方案 截图 不全啊 这个截图 后面could之后的是什么信息 ,看下这个错误信息了.

Linq2Sql数据实体外部更新时“不能添加其键已在使用中的实体”的解决办法

Linq to Sql中,如果我们想在DataContext外部修改一个实体的值,然后把引用传入到DataContext中,再利用Attach附加后更新,代码如下: public static void UpdateMyTable(myData _pDate){    using (dbUserDataContext db = new dbUserDataContext(Website.ConnStrdbUser))    {    try    {        db.myData.Attac

新浪轻博客公测:已与微博打通 内容可同步更新

中介交易 SEO诊断 淘宝客 云主机 技术大厅 新浪轻博客(qing.weibo.com)昨日正式启动公测,此前,轻博客产品已经经过一个多月的内测.(图片来源:新浪) [TechWeb消息]7月19日上午消息,新浪轻博客(qing.weibo.com)昨日正式启动公测,此前,轻博客产品已经经过一个多月的内测.据悉,网友使用新浪微博账户可直接登录,这两个产品之间也已实现互联互通.此外,新浪轻博客还将推出多种移动终端版本. 实际上,新浪轻博客最大的特点就是与新浪微博之间的互联互通.两个产品的用户关系

hibernateTemplate.update() 方法 控制台已输出SQL语句,但数据库没有更新

问题描述 运用Spring集成Hibernate使用hibernateTemplate.update()执行修改用户操作SQL语句控制台已经输出,对象参数也正确,控制台也没有输出事务回滚但数据库数据没有更新卡了一上午了,在网上查了相关问题没有找到合适答案,所以来CSDN求教求大神解答... 解决方案 解决方案二:@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)publicvoidupdateS

一段代码搞懂关于Java中List、Set集合及Map的使用_java

Java中List.Set集合及Map的使用代码如下所示: package tingjizifu; import java.util.*; public class TongJi { /* * 使用Scanner从控制台读取一个字符串,统计字符串中每个字符出现的次数,要求使用学习过的知识完成以上要求 * 实现思路根据Set.List.Map集合的特性完成. */ public static void main(String[] args) { // 输入字符串 Scanner input = n