0

私は初めてMobile6Classic電話アプリケーションに取り組んでおり、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

しかし、私はそこから1行だけ埋められています。残りの行には、データではなくフィールドにxが表示されます(下の画像)。

代替テキスト

私は何が間違っているのですか?

4

2 に答える 2

1

私の推測では、dgRoutesは開いている接続をアクティブに使用しているresultSetをアクティブに使用しています。おそらく、すべてをより高速に動作させるには、結果がスクロールされて表示されるときにのみクエリを実行します(ResultSetOptions.Scrollable)。したがって、必要に応じて追加のデータをプルできるように、接続を開いたままにする必要があります。

于 2010-12-03T18:17:40.567 に答える
0

これが機能する理由はわかりませんが、Using con As SqlCeConnection = New SqlCeConnectionを削除し、con.openを使用してから、コードにcon.closeを追加する衝動に抵抗しました。これを行うと、再び機能しなくなるためです。

機能を壊さずに接続を閉じて破棄できない理由を誰かに教えてもらえますか?別の方法はありますか?

于 2010-12-03T18:08:32.990 に答える