Почему мой SqlCeResultSet возвращает только одну строку? - PullRequest
0 голосов
/ 29 ноября 2010

Я впервые работаю над приложением для телефона Mobile 6 Classic и испытываю проблемы с SqlCeResultSet. Я пытаюсь заполнить сетку данных этим:

    Private Sub LookUpRoutes()
    Dim dir As String = Path.GetDirectoryName(Reflection.Assembly _
        .GetExecutingAssembly().GetName().CodeBase)

    Dim Sql As String = "SELECT RouteID, Name, Description FROM Routes " & _
        "Where IsDeleted = 0"

    Using con As SqlCeConnection = New SqlCeConnection( _
        String.Format("Data Source = '{0}\database\RouteTracker.sdf'", dir))

        con.Open()

        Using cmd As SqlCeCommand = New SqlCeCommand(Sql, con)
            cmd.CommandType = CommandType.Text

            Dim resultSet As SqlCeResultSet = _
                cmd.ExecuteResultSet(ResultSetOptions.Scrollable)
            dgRoutes.DataSource = resultSet
        End Using
    End Using
End Sub

Однако я получаю только одну заполненную строку назад от этого. В оставшихся строках вместо данных отображаются х в полях (изображение ниже).

alt text

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

Мое лучшее предположение, что dgRoutes активно использует resultSet, который активно использует открытое соединение.Предположительно, чтобы все работало быстрее, он запрашивает результаты только по мере их прокрутки (ResultSetOptions.Scrollable) - поэтому соединение должно оставаться открытым, чтобы можно было получать дополнительные данные по требованию.

0 голосов
/ 03 декабря 2010

Я не уверен, почему это работает, но я избавился от использования con As SqlCeConnection = New SqlCeConnection и просто использовал con.open, а затем отказался от желания добавить con.close в код, потому что это делает его не снова работает.

Может кто-нибудь подсказать мне, почему я не могу закрыть и удалить соединение, не нарушая функциональность?Есть ли другой способ?

...