如何使用Update-sql更新数据集,然后用C语言对数据库进行更新

本文关键字:更新 语言 数据库 然后 Update-sql 何使用 数据集 | 更新日期: 2023-09-27 17:58:49

如何使用Update-sql更新数据集,然后用C语言对数据库进行更新。我有这样的代码,它做了一些事情,但实际上并没有更新数据库。我觉得我真的很快就要弄清楚了,但我错过了什么,或者我做得不对。我的代码在下面,如果有人能看到我没有做什么,请告诉我,我已经看了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();

}

如何使用Update-sql更新数据集,然后用C语言对数据库进行更新

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

 try
 {
      oOrdersDataAdapter.Update(oDS, "Table");
 }
 catch (OleDbException e)
 { 
      //Allows for update without violating interigty constainst
      return;
 }

Update方法只更新RowState等于已修改的行

将allrowState设置为DataRowState。修改并调用update方法将有助于

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

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

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