指定された接続文字列を受け取り、SQLビューの内容を含むArrayListを返すメソッドを実装しようとしています。
接続文字列とビュー自体の有効性を確認しました。ただし、以下のコードで問題が何であるかはわかりません。デバッグでは、ExecuteReaderメソッドを実行してから、whileループに入ってビュー内のレコードを反復処理しようとすると、何らかの理由でsqlReader.Read()が実行されないため、すぐに停止します。
public ArrayList GetEligibles(string sConnectionString)
{
string sSQLCommand = "SELECT field1, field2 FROM ViewEligible";
ArrayList alEligible = new ArrayList();
using (SqlConnection sConn = new SqlConnection(sConnectionString))
{
// Open connection.
sConn.Open();
// Define the command.
SqlCommand sCmd = new SqlCommand(sSQLCommand, sConn);
// Execute the reader.
SqlDataReader sqlReader = sCmd.ExecuteReader(CommandBehavior.CloseConnection);
// Loop through data reader to add items to the array.
while (sqlReader.Read())
{
EligibleClass Person = new EligibleClass();
Person.field1 = sqlReader["field1"].ToString();
Person.field2 = sqlReader["field2"].ToString();
alEligible.Add(Person);
}
// Call Close when done reading.
sqlReader.Close();
}
return alEligible;
}
EligibleClassは、ビューの結果の1行を表す単なるクラスオブジェクトであることに注意してください。