I am trying to add a new row to my database . Here is my code :
ds1 is my Dataset , da1 is my data adapter
dRow = ds1.Tables["localitati"].NewRow();
dRow[1] = aux1.Replace(" ", "").Replace("-", "").ToLower();
dRow[2] = aux2.ToLower().Replace(" ", "");
dRow[3] = aux1;
dRow[4] = e.X;
dRow[5] = e.Y;
ds1.Tables["localitati"].Rows.Add(dRow);
da1.Update(ds1, "localitati");
at the da1.update(ds1,"localitati");
the program stops and gives me the error : "Update requires a valid InsertCommand when passed DataRow collection with new rows
."
The connection to the database works ( i have retrieved info from the db )
Any ideas ?
For adding DataRows:
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
// add rows to dataset
builder.GetInsertCommand();
//Without the SqlCommandBuilder this line would fail
adapter.Update(dataSet);
Explanation:
adapter.Update(dataset)
will try to save the changes in the dataset
to the database. It will need:
DataRows
were added)DataRows
were deleted)DataRows
were modified)You can put a breakpoint to inspect your adapter.InsertCommand
before the adapter.Update()
line to see if it is set.
To set them, simply create a SqlCommandBuilder
and fire GetInsertCommand()
, GetDeleteCommand()
, etc.
This should solve the errors:
See MSDN Link for More Info
Quesion Solved;Your question:
dRow = ds1.Tables["localitati"].NewRow();
dRow[1] = aux1.Replace(" ", "").Replace("-", "").ToLower();
dRow[2] = aux2.ToLower().Replace(" ", "");
dRow[3] = aux1;
dRow[4] = e.X;
dRow[5] = e.Y;
ds1.Tables["localitati"].Rows.Add(dRow);
da1.Update(ds1, "localitati");
Answer:
you must use commandBuilder. That is before your update using dataAdapter (or before you creating dataRow) Add the code:
SqlCommandBuilder cmdb = new SqlCommandBuilder(da);
You must define an InsertCommand for you DataAdapter
http://www.codeproject.com/KB/database/relationaladonet.aspx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With