1

よくわかりませんが、ここで間違った道をたどったのではないかと思います。SQLServerのcustomerテーブルを更新しようとしています。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();
4

2 に答える 2

1

TableAdapterを使用して、変更をデータベースにコミットすることができます。詳細については、このリンクを確認してください。

TableAdapter.Update()

于 2013-01-08T20:43:13.000 に答える
0

このような場合、UpdateQueryコマンドを受け取る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 に答える