C#SqlDataReader继续阅读

por*_*ent -3 c# sql sql-server

我有一种从SQL Server数据库中获取数据的方法。我正在使用reader获取所有数据。问题是reader 继续阅读并且应用程序没有弹出。这就像一个无限循环之类的东西。

public static List<Reservering> GetReserverings()
{
    Reservering res = new Reservering();

    using (var conn = new SqlConnection(ConnectionString))
    {
            conn.Open();
            const string query = "select b.boekingid, k.naam, bk.incheckdatum, bk.uitcheckdatum, b.hotelid, b.aantal_gasten from boeking b join klant k on k.klantid = b.boekingid join boekingkamer bk on b.boekingid = bk.boekingid where bk.incheckdatum is not null and bk.uitcheckdatum is not null";

            SqlCommand selectReserveringen = new SqlCommand(query, conn);

            SqlDataReader reader = selectReserveringen.ExecuteReader();

            while (reader.Read())
            {
                 res.Id =  (int)reader["boekingid"];
                 res.Naam = (string)reader["naam"];
                 res.Incheck_datum = (DateTime)reader["incheckdatum"];
                 res.Uitcheck_datum = (DateTime)reader["uitcheckdatum"];
                 res.Hotel = (int)reader["hotelid"];
                 res.Aantal_personen = (int)reader["aantal_gasten"];
            }

            reader.Close();
        }

        return GetReserverings();
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

Cod*_*ter 5

你有一个无限递归调用在年底方法本身:

return GetReserverings();
Run Code Online (Sandbox Code Playgroud)

您可以通过在方法中设置一个断点并逐步执行代码来发现这一点。

您想返回一个保留列表:

var result = new List<Reservering>();

// your code...

return result;
Run Code Online (Sandbox Code Playgroud)

while()循环中,您希望实例化一个新的Reservering每次迭代,并将Add其实例化到结果列表中。