Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [VB.NET] Verifica presenza nomi all'interno di un database

    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
    Il mio ultimo libro:
    Giorni di Follia. Presenze inquietanti a Pescara.
    www.giornidifollia.it

  2. #2
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    myReader.Read()
    serve per effettuare una fetch nel recordset.

    Quindi per posizionarsi nel primo record la prima volta

    Il while non fa altro che scorrere tutti i dati estratti.

    Se non li vuoi scorrere sostituisci al while un if
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.