0

我是第一次使用 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

但是,我只能从中得到一个填充的行。其余行在字段中显示 x,而不是数据(下图)。

替代文字

我究竟做错了什么?

4

2 回答 2

1

我最好的猜测是 dgRoutes 正在积极使用正在积极使用开放连接的结果集。据推测,为了让一切运行得更快,它只在结果滚动到视图中时查询结果(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 回答