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

Discussione: Verifica su riga vuota

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    Verifica su riga vuota

    Ciao a tutti, come posso verificare se un'operazione su un datarow ha portato ad elemento oppure se il datarow è vuoto?

    DataRow r = tblUtenti.webutenti.Select(qrySelect)[0];
    if // Se è PIENO... come lo verifico??
    {

    }

  2. #2
    if(r != null) ....
    pero' prima di arrivare li ti ritrovi con una bella object null reference exception
    Una domanda: perche' per filtrare le righe non usi la dataview che e' li apposta?
    Saluti a tutti
    Riccardo

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Grazie per la risposta! Scusa ma non ho capito il discorso dell'object, come devo gestire la mia riga e cosa c'entra l'eccezione?? Potresti farmi un esempio???

  4. #4
    Originariamente inviato da Valeria75_bis
    non ho capito il discorso dell'object, come devo gestire la mia riga e cosa c'entra l'eccezione?? Potresti farmi un esempio???
    questa riga di codice

    DataRow r = tblUtenti.webutenti.Select(qrySelect)[0];
    nella parte in neretto provoca una exception se la funzione Select non ritorna nessuna datarow.
    Detto questo, puoi rispondere alla mia domanda? Come mai per filtrare le datarow di una datatable non usi una dataview?
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Dalla tua risposta non ho ancora capito come risolvere il problema... OK genera un'exception lo [0] ...ma come risolvo il mio problema iniziale??

    Per quanto riguarda la tua domanda, sinceramente mi stavo basando su un esempio trovato in rete.... io praticamente sto usando un dataset tipizzato che "alimento" poi "filtro" sulla base di un parametro ... forse sbaglio?? in caso affermantivo, qualunque consiglio sulla soluzione migliore è ben accetto.

    Posto il mio codice:

    Codice PHP:

            dbm 
    dbConnection.OpenDB();
            
    dbm.DatabaseDisconnesso tblUtenti;
            
    //Vengono caricati i dati nel DataSet
            
    qrySelect "SELECT * FROM webutenti";
            
    dbm.CaricaTabella(tblUtenti.webutentiqrySelecttrue);
            
    //Viene ricercato l'utente
            
    qrySelect "login ='" tbAccessoLogin.Text "' and password ='" tbAccessoPassword.Text "'";
            
    DataRow r tblUtenti.webutenti.Select(qrySelect)[0];
            if  
    // qui devo fare il controllo sull'oggetto, ho notato che a volte mi va in errore
            
    {
               
    //Utente non trovato
            


    Se il mio codice è migliorabile o, peggio ancora, sbagliato... potresti suggerirmi una strada migliore?


    Grazie

  6. #6
    il codice che dici di aver trovato e' piuttosto brutto detto con un eufemismo gentile
    Dando per scontato che l'oggetto tblUtenti sia un dataset (e quindi sarebbe piu' intuitivo chiamarlo dsUtenti) e tblUtenti.webutenti sia una datatable correttamente istanziata

    Codice PHP:
    tblUtenti.webutenti.DefaultView.RowFilter string.Format("login ='{0}' and password ='{1}'"tbAccessoLogin.TexttbAccessoPassword.Text);
            if (
    dt.DefaultView.Count == 1)
            {
                
    // Utente trovato
            
    }
            else 
            { 
                
    // Utente non trovato
            

    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Grazie infinite per l'aiuto!

    Ti chiedo un ultimo suggerimento: è giusto caricare prima nel dataset TUTTI i records e poi filtrarli (come faccio io)?? Oppure esiste una soluzione piu corretta??

    Grazie

  8. #8
    la risposta e' abbastanza ovvia. E' giusto caricare solo il minimo indispendabile dei dati. Quindi se devi solo verificare che ci sia un record in una tabella tanto meglio fare un SELECT COUNT(*) WHERE ..... e vedere se torna 1 o 0. Se invece devi anche mantenere i dati da qualche parte ma sempre e solo di un record non ha senso caricare tutti i record e poi filtrare per trovarne uno. Meglio caricare solo quello.

    Detto questo, per gestire l'autenticazione degli utenti, come mi sembra di aver detto gia a te in un altro thread, dovresti utilizzare le classi che asp.net e il framework ti mettono a disposizione. Anche nel caso in cui hai gia' un db che ' diverso da quello proposto in automatico, non e' difficile implementare il proprio custom membership provider.
    All'inizio puo' sembrarti difficile ma poi tutto in realta' diventa piu' semplice che non usare session, dataset, dataview e compagnia bella.
    Saluti a tutti
    Riccardo

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Grazie per la risposta, quindi per il caricamento dei dati nel dataset potrei non fare una select * ma applicare subito la select filtrata sull'utente?? (e non fare i due processi: caricamento di tutti i dati nel dataset e successivamente filtro sul dataset)

    quindi piuttosto che fare

    qrySelect = "SELECT * FROM webutenti";
    dbm.CaricaTabella(tblUtenti.webutenti, qrySelect, true);
    //Viene ricercato l'utente
    qrySelect = "login ='" + tbAccessoLogin.Text + "' and password ='" + tbAccessoPassword.Text + "'";
    DataRow r = tblUtenti.webutenti.Select(qrySelect)[0];

    potre fare subit

    qrySelect = "SELECT * FROM webutenti WHERE login ......"
    dbm.CaricaTabella(tblUtenti.webutenti, qrySelect, true);
    DataRow r = tblUtenti.webutenti.Select(qrySelect)[0];


    E' corretto???

    In caso affermativo come potrei applicare la tua soluzione (webutenti.DefaultView.RowFilter....) in questo contesto appena esposto??

    Grazie ancora!

  10. #10
    Che senso ha utilizzare un dataset per leggere un record?
    Il dataset e' uno degli oggetti piu' pesanti nel framework, in sintesi e' un contenitore di tabelle (e datarelations). Se hai bisogno di usare una datatable per contenere un record, usa direttamente una datatable (tipizzato o no).
    Se nella query fai una selezione che in caso positivo deve restituire 1 record per sapere se il record c'e' ti basta fare
    if(tuadatatable.rows.count() == 0)
    // utente non trovato
    else
    // utente trovato
    Saluti a tutti
    Riccardo

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.