51 messaggi dal 07 dicembre 2001
Come posso avere più SqlDataReader con un'unica Connessione?

ecco l'esempio:

string sql="selecet * from tab";

objConnection = new SqlConnection (SQLServer);
SqlCommand objCommand = new SqlCommand(sql, objConnection);
SqlDataReader objDataReader = objCommand.ExecuteReader();

while (objDataReader.Read()) {
id=objDataReader["id"];

sql_new="select * from user where id=" + id;

SqlCommand objCommand_new = new SqlCommand(sql, objConnection);
SqlDataReader objDataReader_new = objCommand_new.ExecuteReader(); //COME POSSO FARLO??

.......
}
2.198 messaggi dal 30 novembre 2001
puoi usare sempre lo stesso command lo stesso datareader, basta che gli imposti come selectCommand la nuova select. Per esempio, una volta effettuata la prima lettura chiudi il datareader:
string sql="selecet * from tab";

objConnection = new SqlConnection (SQLServer);
SqlCommand objCommand = new SqlCommand(sql, objConnection);
SqlDataReader objDataReader = objCommand.ExecuteReader();

while (objDataReader.Read()) {
id=objDataReader["id"];
}
objDataReader.close();
sql_new="select * from user where id=" + id;

SqlCommand objCommand = new SqlCommand(sql_new, objConnection);
SqlDataReader objDataReader = objCommand.ExecuteReader();
51 messaggi dal 07 dicembre 2001
ma se chiudo objDataReader.close(); come riprendo il ciclo while??

così lo interrompo alla prima lettera del redordset
2.198 messaggi dal 30 novembre 2001
no, se hai notato bene io ho messo la chiusura del datareader dopo la fine del ciclio while, quindi dopo che hai letto tutti i record presenti nel datareader.
51 messaggi dal 07 dicembre 2001
scusa e quindi come posso avere una nuova SqlDataReader per ogni id del ciclo?
2.198 messaggi dal 30 novembre 2001
non mi è chiaro quello che vuoi fare, tu vuoi creare una nuova sqldatareder ad ogni id del ciclo? se è così perchè non ne crei una sola facendo una join tra le tabelle?
51 messaggi dal 07 dicembre 2001
non posso fare join, perchè quell' id è solo un esempio, nella realtà è un valore che viene elaborato...
2.198 messaggi dal 30 novembre 2001
allora devi crearti 2 command e 2 datareader diversi, il modo è sempre quello che ti ho scritto, però se non ricordo male non ti fa aprire 2 datareader con la stessa connessione, credo che tu debba comunque chuidere il primo e poi apire il secondo, prova e fammi sapere.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.