none
Query con dati da arraylist RRS feed

  • Domanda

  • buongiorno

    Sto cercando il modo di effettuare una query utilizzando i dati presenti all'interno di una arraylist. Cerco di spiegarmi meglio. Vorrei popolare una arraylist con diversi dati (e su questo nessun problema) e utilizzare questi dati come parametri di ricerca all'interno di un database. Vorrei capire come impostare il testo della query in SQLCOMMAND e come impostare i parametri in modo che consideri i valori della arraylist.

    Grazie per ogni aiuto

    martedì 28 giugno 2022 18:41

Risposte

  • Magari mi scappa qualcosa. Riproviamo, questo link dovrebbe rispondere alla domanda. Spero che aiuta questa informazione. 

    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    venerdì 1 luglio 2022 07:20
    Moderatore
  • Ciao, per utilizzare una query SQL su un database, in C# dovremmo scrivere qualcosa di simile a questo:

                SqlConnection connessione = new SqlConnection("la tua stringa di connessione al database");
                //crea il comando sql coi 2 parametri @Nome e @Cognome
                SqlCommand comando = new SqlCommand("SELECT * FROM ANAGRAFICA WHERE NOME=@Nome AND COGNOME=@Cognome;", connessione);
                
                //crea il primo parametro
                SqlParameter param1 = new SqlParameter();
                param1.ParameterName = "@Nome";
                param1.SqlDbType = System.Data.SqlDbType.NVarChar;
                param1.Value = "Mario";
                
                //crea il secondo parametro
                SqlParameter param2 = new SqlParameter();
                param2.ParameterName = "@Cognome";
                param2.SqlDbType = System.Data.SqlDbType.NVarChar;
                param2.Value = "Rossi";
                
                //aggiunge i parametri in modo sicuro alla stringa di comando
                comando.Parameters.Add(param1);
                comando.Parameters.Add(param2);
                
                //esegue la query sql e mette i risultati in "mioDataReader"
                SqlDataReader mioDataReader = comando.ExecuteReader();

    Io ho supposto che esistesse, nel database, una tabella chiamata ANAGRAFICA con due campi "NOME" e "COGNOME" entrambi di tipo NVarChar.

    Se tu vuoi usare, nella query, il contenuto di una ArrayList, suppongo che tu debba prendere dalla tua ArrayList i valori che ti servono come parametri (in questo caso @Nome e @Cognome). In ogni caso, invece di ArrayList, è consigliabile usare la collection generic List<> che è molto più versatile, è fortemente tipizzata (cioè tutti i suoi elementi devono essere dello stesso tipo), e ti consente, a sua volta, di effettuare su di essa QUERY Linq per estrapolare i suoi elementi.

    Io non so com'è fatta la tua ArrayList... si potrebbe usare un ciclo per piazzare i parametri ed eseguire, volta per volta, il comando SQL...


    mercoledì 6 luglio 2022 20:25
  • Basta creare un metodo statico e metterci dentro la ricerca effettuata con la query e coi parametri. Poi con un ciclo foreach prendi ogni volta i valori della tua ArrayList e li utilizzi come parametri per chiamare il metodo.
    venerdì 8 luglio 2022 20:12

Tutte le risposte

  • Buongiorno, Kadidar,

    Potrei suggerire il seguente LINK.

    Seguendolo, vedresti le prime risposte, che potrebbero aiutare al tuo caso. 

    List<int> results = new List<int>();
    using (SqlDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            results.Add((int)reader["userid"]));
        }
    }
    // use results
    o anche questo:
    var results = con.Query<int>("Select userid from UserProfile where grpid=@id",
        new { id }).AsList();

    *userID sta per esempio, visto che e' preso dal link postato sopra. 


    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    mercoledì 29 giugno 2022 09:02
    Moderatore
  • Buongiorno

    Ti ringrazio per l'aiuto ma quello che mi hai indicato mi sembra che sia la procedura per riempire un arraylist da query. Io vorrei prendere i dati presenti in una arraylist ed utilizzarli come parametri di una query.

    Grazie

    giovedì 30 giugno 2022 17:22
  • Magari mi scappa qualcosa. Riproviamo, questo link dovrebbe rispondere alla domanda. Spero che aiuta questa informazione. 

    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    venerdì 1 luglio 2022 07:20
    Moderatore
  • Ciao, per utilizzare una query SQL su un database, in C# dovremmo scrivere qualcosa di simile a questo:

                SqlConnection connessione = new SqlConnection("la tua stringa di connessione al database");
                //crea il comando sql coi 2 parametri @Nome e @Cognome
                SqlCommand comando = new SqlCommand("SELECT * FROM ANAGRAFICA WHERE NOME=@Nome AND COGNOME=@Cognome;", connessione);
                
                //crea il primo parametro
                SqlParameter param1 = new SqlParameter();
                param1.ParameterName = "@Nome";
                param1.SqlDbType = System.Data.SqlDbType.NVarChar;
                param1.Value = "Mario";
                
                //crea il secondo parametro
                SqlParameter param2 = new SqlParameter();
                param2.ParameterName = "@Cognome";
                param2.SqlDbType = System.Data.SqlDbType.NVarChar;
                param2.Value = "Rossi";
                
                //aggiunge i parametri in modo sicuro alla stringa di comando
                comando.Parameters.Add(param1);
                comando.Parameters.Add(param2);
                
                //esegue la query sql e mette i risultati in "mioDataReader"
                SqlDataReader mioDataReader = comando.ExecuteReader();

    Io ho supposto che esistesse, nel database, una tabella chiamata ANAGRAFICA con due campi "NOME" e "COGNOME" entrambi di tipo NVarChar.

    Se tu vuoi usare, nella query, il contenuto di una ArrayList, suppongo che tu debba prendere dalla tua ArrayList i valori che ti servono come parametri (in questo caso @Nome e @Cognome). In ogni caso, invece di ArrayList, è consigliabile usare la collection generic List<> che è molto più versatile, è fortemente tipizzata (cioè tutti i suoi elementi devono essere dello stesso tipo), e ti consente, a sua volta, di effettuare su di essa QUERY Linq per estrapolare i suoi elementi.

    Io non so com'è fatta la tua ArrayList... si potrebbe usare un ciclo per piazzare i parametri ed eseguire, volta per volta, il comando SQL...


    mercoledì 6 luglio 2022 20:25
  • Buongiorno

    Ho provato ad utilizzare il metodo che mi hai indicato per popolare la arraylist e mi inserisce solamente il primo valore. In realtà è possibile che i valori siano diversi.

    Sai darmi un suggerimento.

    venerdì 8 luglio 2022 18:51
  • Basta creare un metodo statico e metterci dentro la ricerca effettuata con la query e coi parametri. Poi con un ciclo foreach prendi ogni volta i valori della tua ArrayList e li utilizzi come parametri per chiamare il metodo.
    venerdì 8 luglio 2022 20:12
  • Buongiorno

    Si l'ho fatto ma comunque mi da sempre l'ultimo record e non tutti.


    sabato 30 luglio 2022 15:51
  • La procedura che ho scritto esegue una query sul database, utilizzando i parametri @Nome e @Cognome nella clausola WHERE, quindi la ricerca restituisce solo il record (o i record) corrispondenti.

    Se, nel tuo caso, ce ne sono più di uno, ogni volta che tu utilizzi l'istruzione:

    bool trovato = mioDataReader.Read();

    se trovato=true, allora ha letto un record corrispondente alla query scritta.

    Pertanto per ottenere tutti i record relativi alla ricerca, basta eseguire ripetutamente:

    mioDataReader.Read();

    e leggere, ad esempio, i campi con:

    string campo = mioDataReader["nomeCampo"].ToString();

    domenica 31 luglio 2022 09:26