更改每个数据行上的列数据
Posted
技术标签:
【中文标题】更改每个数据行上的列数据【英文标题】:Changing the Column Data on every Data Row 【发布时间】:2016-11-09 05:29:19 【问题描述】:我正在尝试访问DataSet
以更改DataSet
中每一行的列值。
我从数据库中提取了DataSet dsCustomers
。从DataSet
中,我选择了DataSet
中的唯一表。
DataTable
表中有一个名为BillingDate
的列。
我正在尝试将 10 年添加到该列中的 DateTime
变量。我正在尝试对数据表中的每一行执行此操作。老实说,我不知道该怎么做或者我做错了什么。
我下面的代码是我掌握如何做到这一点的最佳尝试。欢迎任何帮助。
SqlConnection sqlConnCustomer = new SqlConnection(cString);
DataSet dsCustomer = new DataSet();
try
dsCustomer = LearningData.SqlHelper.ExecuteDataset(sqlConnCustomer, "dbo.rptRecurringBilling_S");
DataTable table = dsCustomer.Tables[0];
int i = 0;
foreach (DataRow row in table.Rows)
row.AcceptChanges();
row.BeginEdit();
System.DateTime BillingDate = Convert.ToDateTime(table.Rows[i]["BillingDate"]);
BillingDate = BillingDate.AddYears(10);
row.EndEdit();
row.AcceptChanges();
i++;
【问题讨论】:
首先,将新值放回数据表中。如果您想使用更改更新数据库,您可能不想要AcceptChanges
。 AcceptChanges 将清除更改后的 RowState 设置,以便 DA/DT 不会知道它已更新,
为什么不直接写个sql语句,可能会更快
【参考方案1】:
试试这个
foreach (DataRow row in ds.Tables[0].Rows)
var ik = row["BillingDate"];
System.DateTime BillingDate = Convert.ToDateTime(ik);
BillingDate = BillingDate.AddYears(10);
row["VALUE"] = BillingDate;
【讨论】:
以上是关于更改每个数据行上的列数据的主要内容,如果未能解决你的问题,请参考以下文章
如何对特定行上的 numpy 数组进行排序,其他行相应更改? [复制]