【发布时间】:2018-10-27 06:08:34
【问题描述】:
在我的数据库中,我为对象创建了两个不同的表,比如说 OBJECT 和 ORIGINAL_OBJECT(在法语中,例如它是 Repere),它们之间的唯一区别是 ORIGINAL_OBJECT 没有任何列用于保存所做的修改。
我有一个函数可以获取所有字段:
public Repere Select_detail_repere(string query)
{
Repere det = null; ;
if (this.OpenConnection() == true)
{
IDataReader dataReader = ExecuteReader(query);
while (dataReader.Read())
{
det = new Repere();
det.Name = (dataReader["DET_NOM"] ?? string.Empty).ToString().Trim();
det.Modifies = dataReader["MODIFICATIONS"].ToString().Trim();
det.Profil = (dataReader["DET_PRF"] ?? string.Empty).ToString().Trim();
det.Matiere = (dataReader["DET_MAT"] ?? string.Empty).ToString().Trim();
det.GroupeProfil = (dataReader["DET_GRP_PRF"] ?? string.Empty).ToString().Trim();
det.Longueur = double.Parse(dataReader["LONGUEUR"].ToString().Trim());
det.Largeur = double.Parse(dataReader["DET_LARGE"].ToString().Trim());
det.Hauteur = double.Parse(dataReader["DET_HAUT"].ToString().Trim());
det.Poids = double.Parse(dataReader["DET_PDS"].ToString().Trim());
det.Angle1 = double.Parse(dataReader["ANG_AME_1"].ToString().Trim());
det.Angle2 = double.Parse(dataReader["ANG_AME_2"].ToString().Trim());
det.AngleAile1 = double.Parse(dataReader["ANG_AILE_1"].ToString().Trim());
det.AngleAile2 = double.Parse(dataReader["ANG_AILE_2"].ToString().Trim());
det.PercageString = (dataReader["PERCAGE"] ?? string.Empty).ToString().Trim();
det.ScribingString = (dataReader["SCRIBING"] ?? string.Empty).ToString().Trim();
det.Mark = (dataReader["MARK"] ?? string.Empty).ToString().Trim();
det.ContInt0 = (dataReader["CONT_INT"] ?? string.Empty).ToString().Trim();
det.ContExt0 = (dataReader["CONT_EXT"] ?? string.Empty).ToString().Trim();
det.Revision = (dataReader["REVISION"] ?? string.Empty).ToString().Trim();
}
this.CloseConnection();
}
return det;
}
我对 OBJECT 和 OBJECT_ORIGINAL 使用相同的函数。 但是当我想阅读我的 OBJECT_ORIGINAL 时,我遇到了一个错误,指出该字段不存在(显然)。
我已经在其他情况下遇到了同样的问题,因为这个函数只有在我使用SELECT * 时才能工作(如果我没有读取所有列,这将返回错误)。
到目前为止,我发现解决它的唯一方法是使用 try/catch(在 catch 中我将应用默认值,例如 ID=-1),但我觉得这不是一个非常正确的解决方案,并且正在寻找另一种方法来做到这一点。
【问题讨论】:
-
你读过
IDataReader的MSDN文档吗? -
刚刚做了,但没有帮助...