Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di lila89
    Registrato dal
    Oct 2007
    Messaggi
    211

    sgtruttura ricorsiva su dati di un DB

    ciao,
    ho letto su google alcune spiegazioni dell'utilizzo della ricorsione, ad esempio per il fattoriale, ma non riesco a capire come posso applicarla sull'estrazione di dati da un database;

    passando un parametro iniziale "a", deve estrarre tutti i record che sono associati ad "a", poi dai record estratti deve estrarre tutti i record associati a quei record, finchè non vi è più niente da estrarre...

  2. #2
    Utente di HTML.it L'avatar di lila89
    Registrato dal
    Oct 2007
    Messaggi
    211
    posto il docie della mia funzione ricorsiva

    codice:
    void ricorsiva(string userP, string userA)
        {
            DataSet DSetR = new DataSet();
            string Cnnstr = System.Configuration.ConfigurationSettings.AppSettings["CN1"].ToString();
            bool ret2 = false;
            ret2 = clsFunctions.LoadDataSetFromSqlStatement(Cnnstr, "SELECT kiave1, kiave2 FROM amicizie WHERE (amicizie.kiave1 = '" + userP + "' or amicizie.kiave2='" + userP + "' )", "PROVA", ref DSetR, true);
    
            if (ret2 == true)
            {
                if (DSetR.Tables["PROVA"].Rows.Count > 0)
                {
                    string c;
                    string d;
                    int i;
                    i = DSetR.Tables["PROVA"].Rows.Count;
                    bool risultato;
                    risultato = false;
                    do
                    {
                        c = DSetR.Tables["PROVA"].Rows[i]["kiave1"].ToString();
                        d = DSetR.Tables["PROVA"].Rows[i]["kiave2"].ToString();
                        i = i - 1;
                        if (c == userA)
                        {
                            risultato = true;
                        }
                        else if (d == userA)
                        {
                            risultato = true;
                        }
    
                    }
                    while ((i > 0) || (risultato == false));
    
                    if (risultato == true)
                    {
                        Response.Write("contatto tra utenti trovato");
                        GridView1.DataSource = DSetR;
                        GridView1.DataBind();
                    }
                    else
                    {
                        this.ricorsiva(c, userA);
                        this.ricorsiva(d, userA);
                    }
                }
                else
                {
                    Response.Write("errore");
                }
            }
        }

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.