- - PR -
C#とADO.NETのデータUpdateについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-01-16 11:24
C#,ASP.NET,ADO.NETを使用して、SQLサーバーにあるテーブルの値を更新したいのですが出来ずに悩んでいます。
//sqlUpdateCommand1 this.sqlUpdateCommand1.CommandText = "UPDATE shodan_step SET 列2= @列2, 列3 = @列3, 列4 = @列4 WHERE (列1 = @列1)"; this.sqlUpdateCommand1.Connection = this.sqlConnection1; this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ 列2", System.Data.SqlDbType.VarChar, 32, "列2")); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ 列3", System.Data.SqlDbType.VarChar, 32, "列3")); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ 列4", System.Data.SqlDbType.VarChar, 64, "列4")); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@列1", System.Data.SqlDbType.BigInt, 8, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "列1", System.Data.DataRowVersion.Original, null)); public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) { sqlUpdateCommand1.Parameters["@列1"].Value =DataGrid1.DataKeys[(int)e.Item.ItemIndex]; String[] cols ={"@列1","@列2","@列3","@列4"}; int numCols = e.Item.Cells.Count; for (int i=0; i<numCols-1; i++) { String colvalue =((TextBox)e.Item.Cells[i].Controls[0]).Text; sqlUpdateCommand1.Parameters[cols[i+1]].Value = colvalue; Response.Write(colvalue); } sqlUpdateCommand1.Connection.Open(); sqlUpdateCommand1.ExecuteNonQuery(); sqlUpdateCommand1.Connection.Close(); } データグリッドのボタン列を使用してUpdateしたいのですが、上記のソースだと、ボタン列の編集ボタンをクリックしてテキストボックスを表示させ、そのテキストボックスの中身を編集して、更新ボタンを押しても値がUpdateされていないのです。試しに 『Response.Write(colvalue);』で値を表示させたのですが、Update以前の値が表示されるだけです。 どこか、間違いがあれば教えて欲しいのですが。。よろしくお願いします。 | ||||
|
投稿日時: 2003-01-16 11:34
SqlCommandで更新するのではなく、そのSqlCommandをSqlAdapterのUpdateCommandに(DeleteCommandとInsertCommandも別途作成して)設定し、SqlAdapter.Updateメソッドを呼び出します。
#1行だけ更新されていません? | ||||
|
投稿日時: 2003-01-16 12:04
返信ありがとうございます。
ご指摘のあった内容ですが、ソースが長くなる為、途中を省略していました。 『this.sqlDataAdapter1.UpdateCommand = this.sqlUpdateCommand1;』 上記のようにして、SqlAdapterのUpdateCommandに設定しています。 (DeleteCommandとInsertCommandも別途作成しています。) ここが、違うのでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2003-01-17 08:40
それでは、 >> sqlUpdateCommand1.Connection.Open(); >> sqlUpdateCommand1.ExecuteNonQuery(); >> sqlUpdateCommand1.Connection.Close(); は、なんですか?ここを見てレス付けしたのですが? ルートポストの上半分の内容でUpdateCommandを作成し、同様にInsertCommand、DeleteCommandも作成している。MyDataGrid_Updateメソッドでは、SqlAdapterのそれぞれのメンバにSqlCommandを設定し、SqlAdapter.Updateメソッドを呼び出しているにもかかわらず、更新されない。・・・ということでしょうか。 SqlAdapterに更新直前(SQL文を発行する直前)に発生するイベントがあります。そのイベントハンドラを記述し、Debug.Writeで確認してみてはいかがでしょうか。 |
1