Ottenere informazioni sulla struttura di un database con ASP.NET e ADO.NET

di Andrea Zani, in UserScript, ASP.NET, System.Data,

Il .NET Framework ci mette a disposizione una classe per ottenere informazioni utili dai nostri database come la lista delle tabella in esse contenute o un elenco dei campi in una tabella più altre importanti informazioni, attraverso la classe OleDbSchemaGuid, utilizzata per l'accesso ad Access. Nel caso volessimo utilizzare SQL Server, potremo cambiare la stringa di connessione, inserendone una Ole-db che faccia uso di SQL Server stesso.

Vediamo subito un esempio per ottenere la lista delle tabella in un nostro database Access:

<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server" Language="C#">

void Page_Load( object sender, EventArgs e ) {
  OleDbConnection con = new OleDbConnection(@"PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=g:\source\stored.mdb");
  con.Open();
  DataTable dt ;

  dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[]{null,null,null,"TABLE"});
  ElencoTabelle.DataSource = dt;
  ElencoTabelle.DataBind();
  con.Close();
}

</script>
<asp:DataGrid id="ElencoTabelle" runat="server" />

Nella lunga tabella che otterremo, abbiamo a disposizione moltissimi dati che ci possono essere utili, come "COLUMN_NAME" che contiene il nome di ogni campo, il "DATA_TYPE" che è un valore numerico che indica il tipo di dato contenuto.

Se volessimo ottenere informazioni sui campi in una tabella, potremmo utilizzare invece questo script:

<%@ import Namespace="System.IO" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server" Language="C#">

void Page_Load( object sender, EventArgs e ) {
  OleDbConnection con = new OleDbConnection(@"PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=g:\source\stored.mdb");
  con.Open();
  DataTable dt ;

  dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[]{null,null,"Tabella1",null} );
  // al posto di Tabella1 inserire il nome della tabella desiderata

  Elenco.DataSource = dt;
  Elenco.DataBind();
  con.Close();
}
</script>
<asp:DataGrid id="Elenco" runat="server" />

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi