问题是当我向数据集添加第二个数据行时。如果我删除//注释,我只会获得1行而不是80
SqlDataAdapter indicatorsExp = new SqlDataAdapter();
string sqlExp = "SELECT * FROM BusinessApplications.tbl_WPI_Site_Indicators_Exp " +
"where Year = '" + year + "' and Month = '" + month + "'";
indicatorsExp.SelectCommand = new SqlCommand(sqlExp, conn);
SqlCommandBuilder cbexp = new SqlCommandBuilder(indicatorsExp);
indicatorsExp.InsertCommand = cbexp.GetInsertCommand();
DataSet dsExp = new DataSet();
indicatorsExp.Fill(dsExp, "explanations");
DataTable explanations = dsExp.Tables["explanations"];
//.......
foreach (ISite site in sites)
{
DataRow drexp1 = explanations.NewRow();
try
{
drexp1["PlantId"] = site.ID;
drexp1["Month"] = month;
drexp1["Year"] = year;
}
catch { }
DataRow drexp2 = explanations.NewRow();
try
{
drexp2["PlantId"] = site.ID;
drexp2["Month"] = month;
drexp2["Year"] = year;
}
catch { }
explanations.Rows.Add(drexp1);
indicatorsExp.Update(dsExp, "explanations");
// explanations.Rows.Add(drexp2);
// indicatorsExp.Update(dsExp, "explanations");
}
答案 0 :(得分:0)
1 - 如果Select *
确实存在于您的代码中,请修复它。
2 - 你真的需要在Try / Catch中包装Rows.Add()
和Update()
语句以及你正在做的事情。我通常会对整个事情使用一次try / catch,我当然不会像你一样吞下异常。
有了这些说法,你的问题很难理解你正在做什么。完成上述两个修复后,我也会改变这个:
explanations.Rows.Add(drexp1);
explanations.Update(dsExp, "explanations");
explanations.Rows.Add(drexp2);
explanations.Update(dsExp, "explanations");
到此:
explanations.Rows.Add(drexp1);
explanations.Rows.Add(drexp2);
explanations.Update(dsExp, "explanations");
使用(特别)最后两次更改(仅调用Update一次,并实际处理您的异常,即使您只是重新抛出它们),您可以解决问题。至少,您应该获得有关实际问题 的更好信息,以便找到并纠正它。