代码之家  ›  专栏  ›  技术社区  ›  Buck Hicks

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

  •  0
  • Buck Hicks  · 技术社区  · 15 年前

    我第一次使用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 回复  |  直到 15 年前
        1
  •  1
  •   Alain    15 年前

    我最好的猜测是,dgroouts正在积极地使用resultSet,而resultSet正在积极地使用开放连接。想必,为了使一切运行得更快,它只在结果滚动到视图中时查询结果(ResultSetOptions.Scrollable)——因此连接需要保持打开状态,以便它可以根据需要提取额外的数据。

        2
  •  0
  •   Buck Hicks    15 年前

    我不知道为什么这样做,但我摆脱了使用con As SqlCeConnection=New SqlCeConnection,只使用了con.open,然后抵制了在代码中添加con.close的冲动,因为这样做会使它生效 再来一次。

    有人能告诉我为什么我不能关闭和处理连接而不破坏功能吗?还有别的办法吗?