Inserire valori in un Array

sabato 27 gennaio 2007 - 17.49

melmar20 Profilo | Junior Member

Ciao a tutti,

vorrei prelevare dei dati da una tabella del mio Database tramite una Store_Procedure e poi inserirli in un'array di Stringhe.
E' possibile farlo?

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao

>vorrei prelevare dei dati da una tabella del mio Database tramite
>una Store_Procedure e poi inserirli in un'array di Stringhe.
>E' possibile farlo?
Certo, supponiamo di avere un esempio di questo tipo:

USE TuoDB CREATE TABLE ProvaTabella ( id int IDENTITY(1,1) PRIMARY KEY CLUSTERED, descrizione varchar(20) NOT NULL ) INSERT ProvaTabella SELECT 'UNO' INSERT ProvaTabella SELECT 'DUE' INSERT ProvaTabella SELECT 'TRE' INSERT ProvaTabella SELECT 'QUATTRO' INSERT ProvaTabella SELECT 'CINQUE'

ed ecco la definizione della stored procedure:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

A questo punto, in asp.net, devi utilizzare ADO.NET per richiamare la stored procedure. Nella fattispecie, hai bisogno del namespace System.Data.SQLClient e degli oggetti SqlConnection, SqlCommand (definendo il tipo StoredProcedure) ed un SqlDataReader.
Una volta che i dati sono stati caricati nel DataReader, basta ciclarli ed inserirli in un array di stringhe, anche se non ne vedo la particolare utilità. Una volta che già li hai nel datareader (o nel datatable, utilizzando in aggiunta un SqlDataAdapter per la modalità disconnessa) puoi utilizzare il contenitore come se fosse il tuo "array"..

Per rimuovere l'esempio che ti ho passato:

USE TuoDB DROP PROCEDURE proc_GetFromProvaTabella DROP TABLE ProvaTabella
Alx81 =)

http://blogs.dotnethell.it/suxstellino

melmar20 Profilo | Junior Member

i dati prelevati tramite la chiamata alla procedura li ho memorizzati in un Datatable,ora vorrei inviare e-mail a tutti gli indirizzi memorizzati nella colonna del datatable come posso fare una cosa simile?


Per essere + chiaro possibile vorrei sapere come posso manipolare i dati inseriti in un Datatable.....

quando io chiamo la procedura questa mi restituisce un serie di indirizzi mail...io vorrei inviare una mail unica a tutti questi indirizzi quindi avevo pensato di inserire tutti questi indirizzi in un array di stringhe e con un ciclo for inviare le mail....

potrebbe essere una soluzione ottimale?

alx_81 Profilo | Guru

>Per essere + chiaro possibile vorrei sapere come posso manipolare
>i dati inseriti in un Datatable.....
Il DataTable ha una collection rows che può essere utilizzata per scorrere dinamicamente (avanti e indietro, poichè il DT è disconnesso) le righe del resultset ottenuto..
Quindi puoi fare quello che credi..
>
>quando io chiamo la procedura questa mi restituisce un serie
>di indirizzi mail...io vorrei inviare una mail unica a tutti
>questi indirizzi quindi avevo pensato di inserire tutti questi
>indirizzi in un array di stringhe e con un ciclo for inviare
>le mail....
Semplicemente potresti ciclare il contenuto del datatable e poi comporre proprio una stringa separata da "," o da ";" ora non ricordo di preciso come le vuole l'oggetto mail..
Il problema è che forse c'è un limite agli indirizzi, o meglio ai caratteri che la proprietà To o CC o CCn possono supportare..
cmq, io comporrei la stringa csv e poi manderei la mail, proprio come fai ad esempio con Outlook o Thunderbird o Gmail..


Alx81 =)

http://blogs.dotnethell.it/suxstellino

melmar20 Profilo | Junior Member

Da ciò che ho capito facendo una ricerca, nel DataTable non è possibile manipolare i record(nel mio caso particolare MEMORIZZARLI in un Array di stringhe) ma è possibile solo aggiungerli o eliminarli...

Correggimi se sbaglio....

per cercare di essere il più chiaro possibile io vorrei scorrere tutti i record presenti nel DataTable e memorizzarli in un Array,utilizzando codice scritto in Vb.net

alx_81 Profilo | Guru

>Da ciò che ho capito facendo una ricerca, nel DataTable non è
>possibile manipolare i record(nel mio caso particolare MEMORIZZARLI
>in un Array di stringhe) ma è possibile solo aggiungerli o eliminarli...
E' possibile, chiaramente sei costretto a ciclare le righe e ad inserirle nel tuo array una alla volta, ad esempio:

Dim myArray as String() Dim DT as New DataTable("array") Dim DR as DataRow Dim i as Int32 = 0 'popoli il DataTable con una query che torna una colonna "indirizzo", ad esempio. If Not DT Is Nothing andalso DT.Rows.Count > 0 Then ReDim myArray(DT.Rows.Count) For Each DR in DT.Rows myArray(i) = DR("indirizzo") i += 1 Next End If

>per cercare di essere il più chiaro possibile io vorrei scorrere
>tutti i record presenti nel DataTable e memorizzarli in un Array,utilizzando
>codice scritto in Vb.net
Comunque continuo a non capire perchè vuoi utilizzare l'array di stringhe, avendo già un oggetto "collezione" come il datatable..
Ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

melmar20 Profilo | Junior Member

in pratica voglio inserire queste stringhe ,le quali non sono altro che indirizzi mail, in un array per poi creare un ciclo For e inviare a tutti questi indirizzi un unica mail....



per farlo ho pensato di scrivere queste righe :

''Dichiaro un Array di stringhe
Dim contenitore(NomeDataTable.Rows.Count) As String

''Dichairo un oggetto di tipo DataRow
Dim row As DataRow

Dim i As Integer

For i=0 to NomeDataTable.Rows.Count

contenitore(i)=row(0)

next

Che ne dici potrebbe andare ?

Bohemian_Rhapsody Profilo | Newbie

Non credo vada bene perchè row è usato prima che gli sia assegnato un valore

alx_81 Profilo | Guru

>Che ne dici potrebbe andare ?
melmar20, ti ho già postato il codice da utilizzare..
non hai letto il mio precedente post?
Ti ripasso la parte utile:

Dim DR as DataRow Dim i as Int32 = 0 ' se il datatable non è vuoto (DT è il datatable) If Not DT Is Nothing andalso DT.Rows.Count > 0 Then ' avevo usato la redim, ma puoi farlo anche così Dim myArray(DT.Rows.Count) as String ' per ogni riga del datatable ciclo For Each DR in DT.Rows myArray(i) = DR("indirizzo") i += 1 Next End If

perchè non hai letto il post precedente?
Alx81 =)

http://blogs.dotnethell.it/suxstellino

melmar20 Profilo | Junior Member

Grazie alx risolto
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5