Principale utente con più risposte
Query con dati da arraylist

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
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.
- Contrassegnato come risposta Yordan IvanovMicrosoft contingent staff, Moderator lunedì 11 luglio 2022 14:37
-
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...
- Modificato fabiocaruso mercoledì 6 luglio 2022 20:38
- Contrassegnato come risposta Yordan IvanovMicrosoft contingent staff, Moderator lunedì 11 luglio 2022 14:37
-
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.
- Modificato fabiocaruso venerdì 8 luglio 2022 20:16
- Contrassegnato come risposta Yordan IvanovMicrosoft contingent staff, Moderator lunedì 11 luglio 2022 14:37
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.
-
-
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.
- Contrassegnato come risposta Yordan IvanovMicrosoft contingent staff, Moderator lunedì 11 luglio 2022 14:37
-
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...
- Modificato fabiocaruso mercoledì 6 luglio 2022 20:38
- Contrassegnato come risposta Yordan IvanovMicrosoft contingent staff, Moderator lunedì 11 luglio 2022 14:37
-
-
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.
- Modificato fabiocaruso venerdì 8 luglio 2022 20:16
- Contrassegnato come risposta Yordan IvanovMicrosoft contingent staff, Moderator lunedì 11 luglio 2022 14:37
-
-
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();