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