私は気が遠くなるような問題に直面しています。IDbCommand.CommandText の設定方法によって、IDataReader.Read() の動作が異なることに気付きました。
以下のコードでは、「AID」が設定されて EntAgencyId() に渡された場合、reader.Read() は true を返し、プログラムは while ループに入ることができます。関数に渡すのと同じ値 ('455') を使用して EntAgencyId() で 'query' を設定した場合、プログラムは while ループに入ることができません ('AID' をtextbox.text)。
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 を返します。それ以外の場合は false。この場合、Item プロパティと GetValue() を使用して最初の 1 行だけを読み取ろうとしましたが、どちらも「オブジェクトがオブジェクトのインスタンスに設定されていません」というエラーが発生します。
私は完全にアイデアを使い果たしたので、助けていただければ幸いです!