2010-11-29 3 views
0

처음으로 Mobile 6 Classic 전화 응용 프로그램에서 작업 중이며 SqlCeResultSet에 문제가 있습니다. 이걸로 DataGrid를 채우려고합니다 :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

?

답변

1

내 생각에 dgRoutes는 열려있는 연결을 적극적으로 사용하는 resultSet을 적극적으로 사용하고 있습니다. 아마도 모든 것이 더 빠르게 작동하도록하기 위해 결과는 뷰로 스크롤 (ResultSetOptions.Scrollable) 될 때만 쿼리하므로 결과에 따라 추가 데이터를 가져올 수 있도록 연결 상태를 유지해야합니다.

0

나는 왜 이것이 작동하지만 나는 SqlCeConnection을 사용하여 SqlCeConnection = 새로운 SqlCeConnection을 제거하고 con.open을 사용한 다음 코드를 작성하기 위해 con.close를 추가 할 것을 강력히 권고했다. 아니요이 다시 작동합니다.

기능을 손상시키지 않고 연결을 닫고 처리 할 수없는 이유를 누군가가 나를 채울 수 있습니까? 다른 방법이 있습니까?