如何使用update sql更新DataSet,然后使用C sharp更新数据库

时间:2011-06-10 20:29:23

标签: c#

如何使用update sql更新DataSet,然后在C sharp中更新数据库。我有这样的代码它做了一些事情,但实际上并没有更新数据库。我觉得我真的很接近搞清楚这一点,但我错过了一些东西,或者我没有做正确的事情。我的代码在下面,如果有人能看到它是什么我不在做请让我知道,我一直在看这个过去7个小时,但无法理解。

            {   DataSet oDS = new DataSet();
        OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=StaffAs.accdb;");
        conn.Open();

        // Create the DataTable "SAssign" in the Dataset and the OrdersDataAdapter
       // UPDATE StaffAssignment SET StaffID = 4 WHERE (StaffID = 2)
        OleDbDataAdapter oOrdersDataAdapter = new  OleDbDataAdapter(new OleDbCommand("SELECT *     FROM StaffAssignment", conn));
        OleDbCommandBuilder oOrdersCmdBuilder = new  OleDbCommandBuilder(oOrdersDataAdapter);
        oOrdersDataAdapter.FillSchema(oDS, SchemaType.Source);
oOrdersDataAdapter.UpdateCommand = new OleDbCommand(String.Format("UPDATE StaffAssignment SET StaffID = 4 WHERE (StaffID = 2)"));
        DataTable pTable = oDS.Tables["Table"];
        pTable.TableName = "UpdateStaffA";

        oOrdersDataAdapter.Fill(pTable);

        try
        {
            oOrdersDataAdapter.Update(pTable);

        }
        catch (OleDbException e)
        { //Allows for update without violating interigty constainst
            return;
        }
        conn.Close();

}

3 个答案:

答案 0 :(得分:0)

您的代码似乎没有任何问题,只需尝试一下:

 try
 {
      oOrdersDataAdapter.Update(oDS, "Table");

 }
 catch (OleDbException e)
 { 
      //Allows for update without violating interigty constainst
      return;
 }

答案 1 :(得分:0)

更新方法只更新其RowState等于修改

的行

将所有rowState设置为DataRowState.Modified并调用update方法将帮助您

答案 2 :(得分:-1)

运行更新后,请执行以下操作:

pTable.Clear()
oOrdersDataAdapter.Fill(pTable);

这将重新查询数据库并返回新结果。