【发布时间】:2013-06-12 19:30:56
【问题描述】:
我有下面的代码,它使用 OleDB 输出到数据库并用信息填充数据集。然后它会检查以确保它在数据集中有某些内容,如果有,则将该数据集添加到数据表中,然后在函数末尾返回该数据表。
for (int i = 0; i < UserClassDict[UserName].ControlNumber.Count; i++)
{
string query = "SELECT * FROM [FNF Taxes] WHERE ControlNumber =" + UserClassDict[UserName].ControlNumber[i] + ";";
adapter.SelectCommand = new OleDbCommand(query, conn);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
if (dataset.Tables[0].Rows.Count > 0)
{
dt = dataset.Tables[0];
}
}
我的问题是这样的。正如您可以通过 for 循环知道该块所在的那样,它将运行多次,我希望它从数据库中提取的每一行都添加到数据表中。因此,当返回数据表时,它具有所有 X 行。但是,就像在上面的代码块中一样,添加到数据表中的唯一行是被拉取的最新行。
【问题讨论】:
-
我很难理解问题是什么。
-
用于构建此 sql 的技术容易受到注入攻击。这个特定的查询可能没问题,因为它看起来 C# 对象是一种数字数据类型,但是如果您使用相同的技术将数据替换到查询中的其他查询,您实际上是在乞求被黑客入侵。
-
可能是一些额外的代码可以帮助更好地帮助
标签: c# for-loop datatable oledb