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

前端 未结 3 1740
没有蜡笔的小新
没有蜡笔的小新 2020-12-06 17:11

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\"]         


        
相关标签:
3条回答
  • 2020-12-06 17:41

    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

    0 讨论(0)
  • 2020-12-06 17:49

    You must define an InsertCommand for you DataAdapter

    http://www.codeproject.com/KB/database/relationaladonet.aspx

    0 讨论(0)
  • 2020-12-06 17:55

    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);
    
    0 讨论(0)
提交回复
热议问题