为什么我的SqlCeResultSet只返回一行?

时间:2010-11-29 04:23:00

标签: vb.net sql-server-ce windows-mobile-6

我第一次使用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而不是数据(下图)。

alt text

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我最好的猜测是dgRoutes正在积极使用积极使用开放连接的resultSet。据推测,为了使一切操作更快,它只会在滚动到视图中时查询结果(ResultSetOptions.Scrollable) - 因此连接需要保持打开状态,以便它可以按需提取其他数据。

答案 1 :(得分:0)

我不知道为什么会这样有效但我摆脱了使用con as SqlCeConnection = New SqlCeConnection并且只使用了con.open然后抵制了向代码添加con.close的冲动,因为这样做会使它 再次工作。

有人可以告诉我为什么我不能在不破坏功能的情况下关闭和处理连接?还有另一种方式吗?

相关问题