在c#中更新数据表
本文关键字:数据表 更新 | 更新日期: 2023-09-27 18:00:04
我有一个存储学生教室信息的数据表。我的桌子是这样的:
Student ID Grade Absence Count
00001 85 0
00002 95 7
00002 70 5
00003 35 1
不要问我为什么有两个身份证是一样的。。。事情就是这样。现在我想更新缺席计数为7的00002 id的缺席计数。同时,我想删除缺席计数不为7的00002条目(在本例中为计数为5的条目)。现在我知道如何用select语句查询表,并用count 7更新00002 id的student。我如何同时删除00002学生的另一个条目?这是我的代码:
foreach(oldCount in absenceCount)
{
DataRow[] dr = dt.Select("Student ID='" + ID + "' AND Absence Count='" + oldCount);
dr[0]["Absence Count"] = newCount;
}
那么,在这里,我如何告诉程序,如果有另一个学生id的缺勤计数不在缺勤计数列表中,请将其从表中删除?
感谢
您可以编写
dr[1].Delete();
您可以进行相同的选择,但在oldcount上使用相反的条件,就像一样
foreach(oldCount in absenceCount)
{
DataRow[] dr = dt.Select("Student ID='" + ID + "' AND Absence Count != '" + oldCount);
dr[0].Delete();
}
这将为您获取该学生id,但缺勤计数不等于旧计数。
很明显,你仍然有一个问题,正如Blindy所建议的那样,你有两排学生id相同,缺勤次数相同。
我想您可以选择具有相同ID的所有行。更新您想要的行,并删除其余行。类似的东西
DataRow[] dr = dt.Select("Student ID='" + ID + "'");
然后更新与缺勤计数匹配的一个,删除其余的。
关于评论:这是肯尼的回复,但这就是我的意思
foreach(DataRow row in dr)
{
if (dr["Absence Count"] == absencCount)
dr["Absence Count"] = newCount;
else
dr.Delete()
}
foreach(oldCount in absenceCount)
{
DataRow[] dr = dt.Select("Student ID='" + ID);
bool updated = false;
foreach(DataRow row in dr)
{
if (!updated && dr["Absence Count"] == absenceCount)
{
dr["Absence Count"] = newCount;
updated = true;
}
else
{
dr.Delete()
}
}
}