Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Scorrere i dati

  1. #1

    Scorrere i dati

    Ciao a tutti,
    ho iniziato(è un parolone) allora spero di iniziare a fare un mini sito che rifaccia tutte le cose che ho fatto in ASP.

    Visto che sto iniziando con la parte amministrativa di un sito, sto facendo la pagina di login.

    Io devo fare una select passandogli la user e la pwd. Poi se la select restituisce almeno una riga vuol dire che l'autenticazione è andata a buon fine.

    in ASP lo faccio cosi:
    'apri db
    sql="SELCT id FROM Accesso WHERE user='"&Request("user")&"' AND pwd='"&Request("pwd")&"' "
    Set Rs = Conn.Execute(sql)
    if not rs.eof then
    'entra
    else
    'esci
    end if


    in ASP.NET ho questi dubbi:
    prima di tutto il Request("user") e Request("pwd") li potrei sostituire UserName.Text e UserPass.Text

    però quello che non mi risulta chiaro è come faccio a vedere se il dataset è pieno o no?

    dim MyCommand as new OleDbDataAdapter("SELCT id FROM Accesso WHERE user='"&UserName.Text &"' AND pwd='"&UserPass.Text&"' ")

    dim ds as DataSet = new DataSet()
    MyCommand.Fill(ds, "Accesso)


    e poi? Ma devo scrivere tutte queste cose ogni volta che devo fare una ricerca?


    Grazie

  2. #2
    allora sono arrivato a questo:
    <%@ import Namespace="System.Data.SqlClient" %>
    <%@ import Namespace="System.Data.SqlClient.SqlCommand" %>

    e vorrei utilizzare il metodo: SqlCommand.ExecuteScalar che mi restituisce la prima colonna della prima riga nel gruppo di risultati


    'Apro la connessione
    codice:
            'Apro la connessione
            Dim StrConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;" & _
                                                       "Initial Catalog=Agenda")
        
            'Creo la query
            Dim StrQuery As String = "SELECT ID FROM Admin WHERE User='"& UserName.Text &"' AND Pwd='"& UserPass.Text &"' "
    
            'Mando in esecuzione ExecuteScalar
            Dim myCommand As New SqlCommand(StrQuery , StrConn)
            myCommand.Connection.Open()
            myCommand.ExecuteScalar()
        
            Try
                'come faccio a vedere se restituisce qualcosa?
                response.redirect ("index.aspx")
            Catch
                come catturo l'errore
            Finally
                StrConn.Close()
            End Try

    cosi va bene? o manca qualcosa?

  3. #3
    com'è possibile che nessuno mi aiuti.

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Visto che siamo in contatto!!
    sql="Select ecc. ecc."
    Dim objCommand as New SQLCommand(sql , Conn)
    Dim objDataReader as SQLDataReader
    objDataReader = objCommand.ExecuteReader

    if objDataReader.read then'Se trova dei dati
    'qui associ i dati a quello che vuoi Response.redirect("bla bla")
    else
    Response.redirect("bla bla")
    End if
    Quando devi scorrere soltanto i dati ti conviene usare un DataReader che è un po come un recordset in sola lettura(Molto leggero)
    Ciao
    Legnetto

  5. #5
    ricevo questo errore:
    ExecuteReader richiede una connessione aperta e disponibile. Lo stato attuale della connessione è Closed.


    poi mi fai vedere come posso gestire l'errore?

  6. #6
    risolto devo inserire objCommand.Connection.Open()

    if objDataReader.read then


    mi va sempre nella parte else.

  7. #7
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Perchè nella query non trova i dati che cerchi.
    Prova a postare il codice

  8. #8
    rispiego il problema:
    devo controllare se la user e la pwd esistono. Se esistono ridirigo l'utente.
    in asp per vedere se la select restituiva dei valori facevo cosi:
    if not rs.eof then


    codice:
        'Apro la connessione
        Dim StrConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;" & _
                                                   "Initial Catalog=Agenda")
    
        'Creo la query
        Dim StrQuery As String = "SELECT ID FROM Admin WHERE User='"& Replace(UserName.Text, "'", "''") &"' AND Pwd='"& Replace(UserPass.Text, "'", "''") &"' "
    
    
        Dim objCommand as New SQLCommand(StrQuery , StrConn) 
            objCommand.Connection.Open()
        
        Dim objDataReader as SQLDataReader 
            objDataReader = objCommand.ExecuteReader 
        
        if objDataReader.read then
            'Se trova dei dati 
            Response.redirect("index.aspx") 
        else 
            Response.write("riprova") 
        End if

  9. #9
    mi sono sbagliato io, c'era un errore nella query.

    ed ho risolto cosi:

    dim myID as Int64 = myCommand.ExecuteScalar()
    if (myID<>0) then
    response.redirect ("index.aspx")
    else
    Msg.Text ="Errore"
    end if

    che differenza c'è con il tuo metodo?

  10. #10
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Mi sembrava strano perchè ti ho copiato un pezzo della mia pagina di login, e i miei utenti sono tutti registrati.
    La differenza è nel peso della query.
    Io devo fare delle query molto selettive e quando utilizzo un DataReader(Quindi senza modifica o inserimento dati)vedo una differenza abissale nelle prestazioni.
    Asp.Net fornisce degli strumenti validissimi ma bisogna valutare anche
    l'efficenza.
    Ciao
    Legnetto

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.