Premesso che non uso, non usero' mai e poi mai il DataSet e il DataAdapter ....
Quindi sto cercando di spremere al massimo quel che mi resta, il DataReader, che io personalmente ritengo una Manna dal Cielo.
Questo grandissimo oggetto (IMHO) espone un metodo GetSchema() che deve essere eseguito dopo l' apertura della Connessione e l' esecuzione del Comando.
DataTable schema = reader.GetSchemaTable();
La tabella di destinazione sarà popolata con diverse colonne, una per ogni Proprietà esposta dal Database per quella Colonna.
Di seguito vi elenco il risultato ottenuto consultando una tabella di SQL Server Standard 2005.
ColumnName || ColumnOrdinal || ColumnSize || NumericPrecision || NumericScale || IsUnique || IsKey || BaseServerName || BaseCatalogName || BaseColumnName || BaseSchemaName || BaseTableName || DataType || AllowDBNull || ProviderType || IsAliased || IsExpression || IsIdentity || IsAutoIncrement || IsRowVersion || IsHidden || IsLong || IsReadOnly || ProviderSpecificDataType || DataTypeName || XmlSchemaCollectionDatabase || XmlSchemaCollectionOwningSchema || XmlSchemaCollectionName || UdtAssemblyQualifiedName || NonVersionedProviderType ||
Strano ma vero, interrogando la tabella Utenti con Colonna ID impostata come Unique, PrimaryKey, Identity(1,1) il mio bel gioiello mi risponde cio' ...
Name : ID
Key :
Unique : True
Identity : True
Ebbene si, io mi aspettavo un bel True nella seconda colonna e invece, è sempre null quando è Key e quando non lo è ...