开发者

Update requires a valid InsertCommand when passed DataRow collection with new rows

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 req开发者_开发问答uires 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:

  1. InsertCommand (if DataRows were added)
  2. DeleteCommand (if DataRows were deleted)
  3. UpdateCommand (if 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:

  1. "Update requires a valid Update Command when passed DataRow collection with modified rows." Or
  2. "Update requires a valid Insert Command when passed DataRow collection with new rows.", etc.

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


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);
        SqlCommandBuilder scb = new SqlCommandBuilder(da);//just add this line
        da1.Update(ds1, "localitati");
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜