Skip to content

Forum

Please or Register to create posts and topics.

Come sapere se una colonna esiste su un DataReader

MI è successo ieri di dover lavorare con una Query dinamicamente generata (una cosa da evitare quando si può per il SQL Injection) ma in questo caso era necessaria.

Non sapendo come la query viene scritta, devo verificare che esistano i campi che ne utilizzo via codice.

Di qui la domanda, su una DataTable è facile, ma su un DataReader è possibile?

sabrina_c has reacted to this post.
sabrina_c
R.F.

Buona sera, o buongiorno se volete sono le 00:01...

E' possibile sapere quali sono le colonne di un DataReader, utilizzando il metodo GetSchemaTable, qui un esempio che non ho inventato ma trovato e poi adattato alle mie esigenze, spero sia utile anche a te.

List<string> columnNames = reader.GetSchemaTable()
.Rows
.OfType<DataRow>()
.Select(row => row["ColumnName"].XxNullString()).ToList();
if (columnNames.Any(x => x == "MYCOLUMNNAME") )
{
//Do what you need if the column exists
}
else
{
//Do what you need if the column does not exists
}

C'è una chiamata Linq per generare la lista dei nomi delle colonne, poi usiamo il metodo Any Della lista per verificare se la colonna esiste e possiamo applicare codice in entrambe le possibili occorrenze.

Saluti