Sto realizzando una semplice procedura per verificare se un nome dato come input è già presente nel mio Database access.

Per la precisione: inserendo "Nome" e "Cognome" all'interno degli appositi TextBox e premendo il bottone "Inserisci", viene aperta una connessione al database, e viene eseguita una query di selezione con l'istruzione "WHERE".

Devo dire che così come ho fatto funziona tutto, il mio dubbio è questo: faccio eseguire la ricerca del nome e cognome all'interno del DB tramite una classica istruzione SQL con l'opzione "WHERE", delegando quindi al linguaggio SQL il compito di ricercare nel DB...

Detto questo, quello che mi chiedo è se è necessario a questo punto inserire anche l'istruzione "WHILE ... END WHILE" per scorrere i risultati estrapolati dalla query tramite il DataReader. In pratica, che senso ha mettere il ciclo WHILE se ci ha già pensato la query SQL a scorrere tutto il DB e ad estrapolare i risultati cercati?

Naturalmente ho provato a togliere il ciclo ma mi da errore, allora mi viene il dubbio che comunque devo lasciare le cose come stanno...

Vi posto il codice, magari qualcuno sa sciogliere il dubbio e suggerirmi un metodo alternativo... o confermare che va lasciato tutto così magari!

GRAZIE A TUTTI

PS: Forse ho questi dubbi perchè in ASP per fare una cosa simile potevo usare il comando EOF e con una semplice istruzione (IF rec.EOF) capire la volo se la query SQL aveva trovato risultati oppure no, bypassando il ciclo while...

(forse ho qualche confusione io che mi avvicino adesso al .NET.. mha!)


codice:

        ' Apre la connessione al database
        Dim strConnection As String
        Dim myConnection As New OleDbConnection
        Dim myCommand As New OleDbCommand
        Dim myReader As OleDbDataReader

        strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & PercorsoDatabase
        myConnection.ConnectionString = strConnection

        Try
            myConnection.Open()
            Try
                ' Query di selezione
                Dim mySQLQuery As String
                Dim NuovoNomePaziente As String
                Dim NuovoCognomePaziente As String

                NuovoNomePaziente = tbNome.Text
                NuovoCognomePaziente = tbCognome.Text

                mySQLQuery = String.Format("SELECT NomePaziente,CognomePaziente FROM Paziente
WHERE NomePaziente = '{0}' AND CognomePaziente = '{1}'", NuovoNomePaziente, NuovoCognomePaziente)

                ListBox1.Items.Add(mySQLQuery)

                ' inizializza la connessione
                myCommand.Connection = myConnection
                myCommand.CommandText = mySQLQuery
                myReader = myCommand.ExecuteReader()
                Try
                    While myReader.Read()

                        ListBox1.Items.Add("Nome = " & myReader.Item("NomePaziente"))
                        ListBox1.Items.Add("Cognome = " & myReader.Item("CognomePaziente"))

                    End While

                Finally
                    myReader.Close()
                End Try

            Finally
                myConnection.Close()
            End Try

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try