Domanda

Sto lavorando per la prima volta su un'applicazione telefonica Mobile 6 Classic e sto riscontrando problemi con SqlCeResultSet.Sto cercando di riempire un datagrid con questo:

    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

Tuttavia ne ricevo solo una riempita nella riga di ritorno da quello.Le righe rimanenti mostrano x nei campi invece dei dati (immagine sotto).

alt text

Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

La mia ipotesi migliore è che dgRoutes stia utilizzando attivamente il resultSet che sta utilizzando attivamente la connessione aperta.Presumibilmente, per far sì che tutto funzioni più velocemente, interroga solo i risultati mentre vengono visualizzati (ResultSetOptions.Scrollable), pertanto la connessione deve rimanere aperta in modo da poter estrarre dati aggiuntivi su richiesta.

Altri suggerimenti

Non so perché questo funziona, ma mi sono liberato l'aria utilizzando come SqlCeConnection = Nuova SqlCeConnection e appena usato con.open e quindi resistette all'impulso di aggiungere un con.Close al codice perché così facendo rende non di nuovo lavoro.

Qualcuno può fill me il motivo per cui non posso chiudere e smaltire la connessione senza rompere la funzionalità? C'è un altro modo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top