Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    [c#] data reader multipli

    ciao a tutti, io dovrei prendere l' ID_VIA da una tabella e utlilizzarlo per recuperare la via nella tabella delle vie... ho provato con 2 data reader in modo che ogni volta che trova un id nella prima tabella va a caricare la via dalla seconda ma mi dà errore perchè dice che apro 2 reader contemporaneamente e non posso farlo... qualcuno sa come posso evitare di usarne 2 o come posso risolvere la cosa? grazie

  2. #2
    ovviamente mi sn sbagliato nel titolo...non parlo di data reader... ma di executereader.. sorry..

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    559
    il punto e' che non puoi lanciare executeReadar se hai gia un datareader aperto; devi prima chiudere quello precedente e poi aprire quello nuovo:

    int idVia = 0;
    if(reader.Read())
    {
    idVia = (int)reader["ID_VIA"];
    }
    reader.close();
    //adesso fai la nuova query
    se nella vita avro avuto la possiblita di aiutare qualcuno non avro vissuto invano (E. Dikinson)

  4. #4
    si me ne sono accorto... ma non so come fare perchè ho parecchi risultati da entrambe le query...per questo volevo scorrerle con l'executereader e per ogni idVia andare a prendere il nome dalla tabella delle vie...

  5. #5
    salvarmi gli idVia in un array per poi riprenderli con l'execute reader successivo potrebbe essere un'idea?però mi dà problemi con l'inizializzazione dell'array...

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    559
    puoi usare un ArrayList invece di un array:

    ArrayList list_Of_IVAI_ids = new ArrayList();

    while (reader.Read())
    {
    int idIva = (int) reader["ID_IVA"];
    list_Of_IVAI_ids.Add(idIva );
    }
    se nella vita avro avuto la possiblita di aiutare qualcuno non avro vissuto invano (E. Dikinson)

  7. #7
    ma il problema delle executereader rimane... ti faccio vedere...
    codice:
    protected void Page_Load(object sender, EventArgs e)
        {
            string codim;
            codim = Session["idim"].ToString();
            SqlCommand cmd = null;
            cmd = conn.CreateCommand();
            cmd.CommandText = "SELECT ID_VIA FROM PERCORSI_VIE WHERE ID_PERCORSO = "+ codim;
            cmd.CommandType = CommandType.Text;
            conn.Open();
            reader = cmd.ExecuteReader();
            if (reader.Read())
            {
                salvaDati(reader["ID_VIA"].ToString());
            }
            reader.Close();
            conn.Close();
        }
    
    
        protected void salvaDati(String via)
        {
            String[] array = new String[10];
            int i = 0;
            array[i] = via;
            SelezionaVie(array, i);
        }
    
    
        protected void SelezionaVie(String[] array,int i)
        {
            reader.Close();
            String indPar;
            SqlCommand cmd1 = conn.CreateCommand();
            cmd1.CommandText = "SELECT Via FROM VIA WHERE ID_Via=" + array[i];
            cmd1.CommandType = CommandType.Text;
            SqlDataReader reader1 = cmd1.ExecuteReader();
            if (reader1.Read())
            {
                indPar = reader1["Via"].ToString();
            }
            reader1.Close();
        }
    qui uso array invece di arraylist ma non credo sia quello il problema...

  8. #8
    così con l'if alla fine nn dà errore ma non funziona lo stesso..se invece metto il while per farlo per tutti gli elementi si blocca e mi dice che non posso aprire due execute reader ovviamente...

  9. #9
    guarda sono riuscito a salvare i dati nell'array...ma quando li devo riprendere mi ridà errore perchè nel ciclo while non mi fa inizializzare variabili...ke odio sta cosa...

    codice:
    int i = 0;
            String indPar;
            SqlCommand cmd1 = conn.CreateCommand();
            while (array[i] != null)
            {
                cmd1.CommandText = "SELECT Via FROM VIA WHERE ID_Via=" + array[i];
                cmd1.CommandType = CommandType.Text;
                SqlDataReader reader1 = cmd1.ExecuteReader();
                if (reader1.Read())
                {
                    indPar = reader1["Via"].ToString();
                }
            }
            reader1.Close();

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    559
    mmm provo a darti uno spunto:
    codice:
    protected void Page_Load(object sender, EventArgs e)
        {
            string codim;
            codim = Session["idim"].ToString();
            SqlCommand cmd = null;
            cmd = conn.CreateCommand();
            cmd.CommandText = "SELECT ID_VIA FROM PERCORSI_VIE WHERE ID_PERCORSO = "+ codim;
            cmd.CommandType = CommandType.Text;
            conn.Open();
            reader = cmd.ExecuteReader();
            ArrayList idViaArrayList = new ArrayList();
            while(reader.Read())
            {
                idViaArrayList.Add (reader["ID_VIA"].ToString());
            }
            reader.Close();
        }
    A questo punto in idViaArrayList hai la lista di tutte le vie.

    quindi:

    for(int i=0; i < idViaArrayList.Count; i++)
    {
    salvaDati(idViaArrayList[i]);
    }

    se nella vita avro avuto la possiblita di aiutare qualcuno non avro vissuto invano (E. Dikinson)

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.