- - PR -
DataRowに主キーが複数のDataTableの特定の行を取得したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-01-12 19:56
お世話になります。
テーブルのある行を削除したいと思っています。 主キーが一つのDataTableであれば、 string tableName; DataSet ds; DataAdapter da: のときに、 ds.Tables["tableName"].PrimaryKey = new DataColumn[] { ds.Tables[tableName].Columns[columnName] }; DataRow row = ds.Tables["tableName"].Rows.Find(idBox.Text); として、DataRowに特定のデータ行をセットして、 row.Delete(); da.Update(ds, "tableName"); というように、データを削除できますが、 主キーが複数のときに、似た方法で行を削除したいのです。 この場合、DataRowに特定のデータ行をセットするには、 どうしたらよいのでしょうか? よろしくお願いします。 |
|
投稿日時: 2008-01-12 21:16
> DataRow row = ds.Tables["tableName"].Rows.Find(idBox.Text);
.Find(Object)のかわりにFind(Object[])を使う http://msdn2.microsoft.com/ja-jp/library/system.data.datarowcollection.find(VS.80).aspx |
|
投稿日時: 2008-01-13 17:35
ありがとうございます。
object[] findVals = new object[2]; findVals[0] = Convert.ToInt32(idBox.Text); findVals[1] = Convert.ToInt32(yearBox.Text); SqlCommand cmd = new SqlCommand( "DELETE FROM " + tableName + " WHERE ID = @ID AND Year = @Year", cn); da.DeleteCommand = cmd; cmd.Parameters.AddWithValue("@ID", findVals[0]); cmd.Parameters.AddWithValue("@Year", findVals[1]); DataRow row = ds.Tables[tableName].Rows.Find(findVals); cn.Open(); cmd.ExecuteNonQuery(); といった方法で、やっと行の特定と、削除とができました。 このとき、 row.Delete(); da.Update(ds, tableName); ともに、利用しないのですが、問題ないのでしょうか? |
1