Skip to main content

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


This is an error, with which i was dumbfounded for weeks. The problem is simple. I have a DataSet and it automatically generates INSERT command. So i can add rows to the DataSet and update it easily. But whenever i change values in existing rows and update it via TableAdapter, I get this exception "Update requires a valid UpdateCommand when passed DataRow collection with modified rows". I found inside the generated code that only INSERT command is generated. Whatever i try, the DataSet designer would not create an UPDATE command nor a DELETE command for this TableAdapter.

Solution 1:

You can select the TableAdapter and write your own query for the update command in the property dialog box.

But this is not a good idea.

Solution 2: (Better one)

The problem lies within your table design. Check it out again and check whether you have created a primary key for the table. Mostly this will be the case, as I forgot to create one. Now after creating the primary key, you can recreate the DataSets to get the corresponding UPDATE and DELETE statements.

But if you do not want a primary key in your table, you may resort to first solution.


Cheers.

Comments

Senthil said…
Well, I was looking for something what exactly was the solution 1 you have provided...

Thanks for the useful post :)
Appia said…
Thanks from Chile!
niteskunk said…
Was having the exact same problem. Thanks so much for the easy fix!
Suncat2000 said…
Incredible. Thanks for documenting that a Primary Key was necessary for the Update and Delete methods to be generated.

I find it dumbfounding that Microsoft leaves out such critical information. Thank you for filling in the blank!
kilad said…
Fina-fuckin-lly someone with a non convoluted answer.

Thank you very much.
This comment has been removed by the author.
Mike said…
Did not fix it for me. I have a primary key (on a BIGINT) which is unique. WIth the MySqlCommandBuilder(MySqlDataAdapter).GetUpdateCommand() I have a command with a bunch of paramters. But the parameters for that command are all null. Though they have the right DataType...
Regev Porat said…
Thanks... (forgot the PK)
karthik keyan said…
Thanks a lot for your advice...working for me
Sukhada said…
Thanks it really helped a lot to fix the problem

Featured

You are in a cold conference room, Do you want to use your mac as a heater?

Imagine that you are in cold conference room and you kind of feeling the cold on your head. What do you do when you are in a serious meeting and just can't get out?

If you have a MacBook, you might have a solution.

Use your terminal to run either of these commands to keep your CPU at above 80% or if you want you can run them both.

$ openssl speed

and/or 

$ yes > /dev/null

The first command just outputs the ssl cryptography stats and it keeps your cpu busy. The second command just prints the character "y" into IO.

So try it out and let me know how it works! :D


Talk to me on Twitter, Facebook, LinkedIn or Website

Popular Posts

You will receive wonderful short stories written by him and inspirational articles once every month.