我遇到了一个令我难以置信的问题。我注意到 IDataReader.Read() 的行为不同,具体取决于 IDbCommand.CommandText 的设置方式。
在下面的代码中 - 如果设置了“AID”并将其传递给 EntAgencyId(),则 reader.Read() 返回 true,并且程序能够进入 while 循环。如果我只是在 EntAgencyId() 中使用我传递给函数的相同值 ('455') 设置“查询”,则程序永远无法进入 while 循环(从一个文本框.文本)。
public string EntAgencyId(string AID)
{
cmd = uasConnection.CreateCommand();
//query = "select * from EnterpriseAgencyTbl where AOCId = " + AID; //<--Works
query = "select * from EnterpriseAgencyTbl where AOCId = 455"; //<--Causes issue
cmd.CommandText = query;
reader = cmd.ExecuteReader();
while (reader.Read())
{
EntAgId = reader["Id"].ToString();
AgencyName = reader["Name"].ToString();
}
reader.Close();
return AgencyName;
}
调试时,'query' 总是具有相同的值,那么为什么这与 .Read() 有所不同。
深思 - .Read() 如果有更多行则返回 true;否则为假。在这种情况下,我尝试使用 Item 属性和 GetValue() 仅读取第一行,两者都会导致“对象未设置为对象的实例”错误。
我已经完全没有想法了,所以任何帮助将不胜感激!