C # не доступ к читателю SQL - PullRequest
0 голосов
/ 02 ноября 2011

, поэтому у меня есть этот класс, который имеет функции c # для работы с резервированием и освобождением мест. В любом случае, в режиме отладки время проверяется, а затем его содержимое пропускается. Я предполагаю, что нет результата, возвращенного для чтения для фактического доступа? но что я мог сделать? потому что этот код работал, и вдруг он остановился ...

 string queryRangeForCheck = "select * from DateTest WHERE datefill between @startdate AND @enddate";
        SqlConnection conn = new SqlConnection("....");
        conn.Open();
        SqlCommand command = new SqlCommand(queryRangeForCheck, conn);
        command.Parameters.AddWithValue("@startdate", startDate);
        command.Parameters.AddWithValue("@enddate", endDate);
        SqlDataReader reader = command.ExecuteReader();

        int bookingStatus = 2;
        //for the range found do:
        while (reader.Read())
        {
            //establish the number of seats available for this date
            int currentRow = Convert.ToInt32(reader["seats"]); 
            //if the number is > 0 i.e. if not fully booked

            if (currentRow != 0)
            {
                //if the number of seats can accomodate the number required
                if (currentRow >= requiredSeats)
                {
                  ....

Пожалуйста, совет Спасибо

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

Основной проблемой было подтверждено, что читатель ничего не возвратил.Это связано с типом и форматом передаваемых и ожидаемых параметров даты.Следовательно, оно не совпадало и не могло дать никаких результатов.Когда дата была переформатирована в мм / дд / гггг, на самом деле все работало.Спасибо всем за большой вклад:)

0 голосов
/ 02 ноября 2011

Попробуйте проверить наличие строк в считывателе, используя свойство HasRows.

Кроме того, создайте новую таблицу и загрузите таблицу с помощью считывателя.Это закроет читателя, но вы сможете использовать визуализатор отладки набора данных для проверки результатов.Затем просто выполните команду еще раз.В следующем фрагменте кода команда возвращает несколько наборов результатов.Поэтому я продолжаю загружать таблицы до тех пор, пока читатель не закроется во время вызова метода Load.

            oReader = Me.SelectCommand.ExecuteReader(CommandBehavior.CloseConnection Or CommandBehavior.KeyInfo)

#If DbDebug Then

        'load method internally advances to the next result set
        'therefore, must check to see if reader is closed instead of calling next result

        Do
            Dim oTable As New DataTable("Table")
            oTable.Load(oReader)
            'Inspect oTable here as needed.
            oTable.WriteXml("C:\" + Environment.TickCount.ToString + ".xml")
            oTable.Dispose()
        Loop While oReader.IsClosed = False

        'must re-open the connection
        Me.SelectCommand.Connection.Open()

        'reload data reader
        oReader = Me.SelectCommand.ExecuteReader(CommandBehavior.CloseConnection Or CommandBehavior.KeyInfo)

#End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...