SQL DataTable更新?

时间:2013-01-08 20:38:56

标签: c# winforms sql-server-2008-r2

我不确定,但我想我可能走错了路。我想在我的SQL Server上更新我的客户表。我连接了一个SQLDatareader,然后将其加载到我的Datatable中。我做了我想要的所有更改,现在我无法弄清楚如何更改备份。我以为“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();

2 个答案:

答案 0 :(得分:1)

您可以使用TableAdapter将更改提交回数据库。有关详细信息,请查看此链接。

TableAdapter.Update()

答案 1 :(得分:0)

在这种情况下,您需要使用DataAdapter,它具有Update属性,可以使用Update Query Command。

即使您可以使用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 Link