Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Visibilità reference a oggetti
lunedì 19 gennaio 2009 - 13.16
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Leonida
Profilo
| Junior Member
85
messaggi | Data Invio:
lun 19 gen 2009 - 13:16
Ciao a tutti,
Ho scritto un metodo di una classe che istanzia un oggetto Command e un Reader ,in funzione del tipo di database letto usando un is su un parametro.
L'istanziazione viene eseguita all'interno di una serie di if. Il problema è che quando leggo le tuple restituite dalla select in sequenza tramite un while esternamente agli if, non riconosce gli oggetti istanziati.
Il codice è il seguente:
public string[] SelezionaNazioni(DbConnection connessione)
{
string[] nazioni = null;
string query = " SELECT Nome " +
" FROM Nazioni;";
...
// Istanzia un oggetto Command e un Reader in funzione del tipo di database
if (connessione is OleDbConnection)
{
OleDbCommand com = new OleDbCommand(query, (OleDbConnection)connessione);
OleDbDataReader cursore = com.ExecuteReader();
}
if (connessione is SqlConnection)
{
SqlCommand com = new SqlCommand(query, (SqlConnection)connessione);
SqlDataReader cursore = com.ExecuteReader();
}
if (connessione is OracleConnection)
{
OracleCommand com = new OracleCommand(query, (OracleConnection)connessione);
OracleDataReader cursore = com.ExecuteReader();
}
// legge le tuple risultanti della query
while(cursore.Read())
{
...
}
...
return nazioni;
}
Mi sembra poco pulito definire il while all'interno di ogni if. Non trovo la discendenza di DataReader e dichiarandolo esternamente come un generico object ed eseguendo un casting, chiaramente non mi funziona.
Come sempre sto usando visual studio 2005, potete aiutarmi?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 19 gen 2009 - 14:04
>Ciao a tutti,
Ciao!
>Come sempre sto usando visual studio 2005, potete aiutarmi?
Che ne dici invece di usare la IDBConnection. Questa è l'interfaccia comune a tutte le connessioni.
Dichiari una variabile di tipo IDBConnection, e poi in base a come ti arriva il parametro assegni ad essa il tipo di connessione adatto.
Questo ti permette di dichiarare la variabile fuori dagli if..
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Leonida
Profilo
| Junior Member
85
messaggi | Data Invio:
lun 19 gen 2009 - 14:31
Si infatti lo faccio per la gestione della connessione al DB che ho implementato in modo generico usando la classe padre per la dichiarazione dei reference, ma non trovo la classe padre di DataReader che invece viene implementato con la stessa firma per ogni tipologia di DB.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 19 gen 2009 - 14:40
>Si infatti lo faccio per la gestione della connessione al DB
>che ho implementato in modo generico usando la classe padre per
>la dichiarazione dei reference, ma non trovo la classe padre
>di DataReader che invece viene implementato con la stessa firma
>per ogni tipologia di DB.
e questa?
http://msdn.microsoft.com/it-it/library/system.data.common.dbdatareader
(VS.80).aspx
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Leonida
Profilo
| Junior Member
85
messaggi | Data Invio:
lun 19 gen 2009 - 14:43
Mmmh, sembra funzionare, ok ti ringrazio...
Torna su
Stanze Forum
Elenco Threads
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 !