Error : Update requires a valid UpdateCommand when passed DataRow collection with modified rows

后端 未结 4 2195
孤独总比滥情好
孤独总比滥情好 2020-12-21 01:20

I am using Paging to show data in datagridview, but when i try to Update any data with updatebutton data should be updated In datagridview

相关标签:
4条回答
  • 2020-12-21 02:02

    It could be that you are missing Primary Key in the table. You need to make sure primary key is set on a column in your data base table.

    0 讨论(0)
  • 2020-12-21 02:14

    You have Created the OleDbDataAdapter with a Select command only:

    adp1 = new OleDbDataAdapter(cmd1);
    

    OleDbDataAdapter requires valid Update, Insert, Delete commands to be used to save the data like this:

    adp1.Update(dt);//here I am getting error
    

    You just need to use a OleDbCommandBuilder that will generate the commands for you:

    adp1 = new OleDbDataAdapter();
    adp1.SelectCommand = cmd1; // cmd1 is your SELECT command
    OleDbCommandBuilder cb = new OleDbCommandBuilder(adp1);
    

    EDIT

    Since you change the Select command of the OleDbDataAdapter at runtime for paging, what your need is to initialize each time you save data:

    private void button1_Click(object sender, EventArgs e)
        {
            try
            {                
                adp1.SelectCommand = cmd1; // cmd1 is your SELECT command
                OleDbCommandBuilder cb = new OleDbCommandBuilder(adp1);
                adp1.Update(dt); //here I hope you won't get error :-)
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message.ToString());
            }
    
        }
    
    0 讨论(0)
  • 2020-12-21 02:22

    I had to alter my (incrementing) index column to the primary key of my table (as Eaint suggest). After this, I had to pull up the DataSet.xsd in designer view, right click on the visual DataTable object and select configure. When the TableAdapter Configuration Wizard opened, I clicked the Advanced Options button. I checked the Generate Insert, Update and Delete statements checkbox then OK and Finish. After this (still in designer view), I selected the visual TableAdapter object which gave me all the full properties. The SQL was autogenerated. Took a while for me to track this down, so I hope it helps someone.

    0 讨论(0)
  • 2020-12-21 02:22

    Thanks to "@Chris" the code above works for me. I needed to specify the Database Table name that will be updated when I Update. You can read more about that here: DataAdapter: Update unable to find TableMapping['Table'] or DataTable 'Table'

        // This Adapter and Dataset are used for Populating my datagridview, so I use them also when I need to Update the Datagridview
    
        SqlDataAdapter kundeTlfAdapter;
        DataSet kundeTlfDataSet; 
    
            try
            {
                SqlConnection connection = new SqlConnection("Data source=BG-1-PC\\SQLEXPRESS; Database = Advokathuset; User Id = abc; Password = abc;");
                SqlCommand cmd1 = new SqlCommand("Select* From Kunde_Tlf", connection);
                SqlCommandBuilder builder = new SqlCommandBuilder(kundeTlfAdapter);
                kundeTlfAdapter.SelectCommand = cmd1; // cmd1 is your SELECT command
    
                kundeTlfAdapter.Update(kundeTlfDataSet, "Kunde_Tlf"); //I get eror here if I dont add the name of the table that needs Update "Kunde_Tlf"
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message.ToString());
            }
    
    0 讨论(0)
提交回复
热议问题