1

我不确定,但我想我可能在这里走错了路。我正在尝试更新我的 SQL Server 上的客户表。我连接了一个 SQLDatareader,然后将其加载到我的数据表中。我已经完成了我想要的所有更改,但现在我不知道如何恢复这些更改。我认为“myDataTable.AcceptChanges();” 会触发这种情况发生,但事实并非如此。

SqlConnection myConnection = new SqlConnection();
                SqlCommand myCommand;
                DataTable myDataTable;
                SqlDataReader myReader;


                myCommand = new SqlCommand();
                myCommand.CommandText = " SELECT * FROM customer";
                myCommand.CommandType = CommandType.Text;
                myCommand.Connection = myConnection;
                myCommand.Connection.Open();

                myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

                myDataTable = new DataTable();
                myDataTable.Load(myReader);

                // Make Data changes here

                myDataTable.AcceptChanges();
                MyDataTable.Dispose();
                MyCommand.Dispose();
                MyConnection.Dispose();
4

2 回答 2

1

您可以使用 TableAdapter 将更改提交回数据库。查看此链接了解详情。

TableAdapter.Update()

于 2013-01-08T20:43:13.000 回答
0

在这种情况下,您需要使用具有 Update 属性的 DataAdapter,该属性接受您的更新查询命令。

即使您可以使用 Command Builder,然后从 CommandBuilder 中获取 UpdateCommand。

来自 MSDN 的示例代码

SqlDataAdapter catDA = new SqlDataAdapter("SELECT CategoryID, CategoryName FROM Categories", nwindConn);       

catDA.UpdateCommand = new SqlCommand("UPDATE Categories SET CategoryName = @CategoryName " +
                                     "WHERE CategoryID = @CategoryID" , nwindConn);

catDA.UpdateCommand.Parameters.Add("@CategoryName", SqlDbType.NVarChar, 15, "CategoryName");

SqlParameter workParm = catDA.UpdateCommand.Parameters.Add("@CategoryID", SqlDbType.Int);
workParm.SourceColumn = "CategoryID";
workParm.SourceVersion = DataRowVersion.Original;

DataSet catDS = new DataSet();
catDA.Fill(catDS, "Categories");   

DataRow cRow = catDS.Tables["Categories"].Rows[0];
cRow["CategoryName"] = "New Category";

catDA.Update(catDS);

MSDN 链接

于 2013-01-08T21:00:54.247 回答