asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 13426
ASPCode.it - Store

  > > Articoli

Il metodo OpenSchema dell'oggetto Connection

Data di pubblicazione: 27/06/2001        Voto della community: 4,41 (Votanti: 23)


OpenSchema è un metodo dell'oggetto ADO Connection che viene usato raramente ed è di conseguenza pittosto sconosciuto ai più; in questo articolo analizzeremo il suo utilizzo.

L'oggetto ADO Connection è molto utilizzato nelle pagine ASP, e con esso anche i suoi metodi come ad esempio Open, Close, Execute, ecc. Esiste un metodo di questo oggetto che ha funzionalità totalmente differenti da quelli sopra citati: il metodo OpenSchema, il quale fornisce i dettagli della struttura di un Database. Anche se poco utilizzato, in alcune situazioni, questo metodo può rivelarsi molto utile.

SINTASSI

La sintassi per utilizzare il metodo OpenSchema è la seguente:

Set rs = cn.OpenSchema(TipoQuery[, Criteri, SchemaID])

- TipoQuery: tipo di query-schema da esguire
- Criteri: array opzionale di criteri per la query
- SchemaID: parametro per query schema non definite dalle specifiche OLEDB

In questo articolo focalizzeremo la nostra attenzione sul parametro TipoQuery. Questo parametro può assumere uno dei valori contenuti in SchemaEnum; per visulizzare la lista dei valori disponibili, aprite adovbs.inc e cercate le costanti con prefisso adSchema.
Per le finalità di questa discussione comunque, mostreremo due esempi:
1 - Sript che visualizza i nomi delle tabelle contenute in un database
2 - Sript che visualizza i campi contenuti in una determinata tabella

VISUALIZZARE LA LISTA DELLE TABELLE CONTENUTE IN UN DATABASE

Se come TipoQuery utilizziamo adSchemaTables (che corrisponde a 20), il metodo OpenSchema restituisce un Recordset contenente i seguenti campi:

  • TABLE_CATALOG
  • TABLE_SCHEMA
  • TABLE_NAME
  • TABLE_TYPE
  • TABLE_GUID
  • DESCRIPTION
  • TABLE_PROPID
  • DATE_CREATED
  • DATE_MODIFIED

Nel caso si utilizzi un database Access, TABLE_CATALOG fornisce la posizione fisica del file .mdb. TABLE_NAME restituisce il nome della tabella e TABLE_TYPE il tipo di tabella. I principali valori possibili per TABLE_TYPE sono: SISTEM TABLE, TABLE, VIEW.

Per conoscere le tabelle di nostro interesse che contiene un database dobbiamo elaborare uno script che sia in grado di selezionare solo le tabelle di tipo TABLE; ecco il codice di esempio:

<%
Dim cn, rs, adSchemaTables
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("database.mdb")
adSchemaTables = 20
Set rs = cn.OpenSchema(adSchemaTables)
do while not rs.eof
  if Trim(rs("TABLE_TYPE")) = "TABLE" then
    Response.Write rs("TABLE_NAME") & "<br>"
  end if
  rs.MoveNext
loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>

VISUALIZZARE LA LISTA DEI CAMPI CHE COSTITUISCONO UNA TABELLA

Se utilizziamo OpenSchema con la costante adSchemaColumns (che corrisponde a 4), il recordset che otteniamo fornisce i dettagli dei campi di tutte le tabelle; esso è costituito dai seguenti campi:

  • TABLE_CATALOG
  • TABLE_SCHEMA
  • TABLE_NAME
  • COLUMN_NAME
  • COLUMN_GUID
  • COLUMN_PROPID
  • ORDINAL_POSITION
  • COLUMN_HASDEFAULT
  • COLUMN_DEFAULT
  • COLUMN_FLAGS
  • IS_NULLABLE
  • DATA_TYPE
  • TYPE_GUID
  • CHARACTER_MAXIMUM_LENGTH
  • CHARACTER_OCTET_LENGTH
  • NUMERIC_PRECISION
  • NUMERIC_SCALE
  • DATETIME_PRECISION
  • CHARACTER_SET_CATALOG
  • CHARACTER_SET_SCHEMA
  • CHARACTER_SET_NAME
  • COLLATION_CATALOG
  • COLLATION_SCHEMA
  • COLLATION_NAME
  • DOMAIN_CATALOG
  • DOMAIN_SCHEMA
  • DOMAIN_NAME
  • DESCRIPTION
  • ORDINAL

Il campo COLUMN_NAME di tutti i records che hanno uno stesso valore di TABLE_NAME fornisce la lista dei campi di quella determinata tabella.

L'esempio seguente permette di visualizzare i nomi dei campi che costituiscono una specifica tabella; al posto di NomeTabella dovrete inserire il nome della tabella di cui volete conoscere i campi:

<%
Dim cn, rs, adSchemaColumns
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("database.mdb")
adSchemaColumns = 4
Set rs = cn.OpenSchema(adSchemaColumns)
do while not rs.eof
  if Trim(rs("TABLE_NAME")) = "NomeTabella" then
    Response.Write rs("COLUMN_NAME") & "<br>"
  end if
  rs.MoveNext
loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>

Questo articolo è semplicemente una introduzione al metodo OpenSchema dell'oggetto Connection; ora potete sbizzarrirvi nell'esplorare da voi stessi le altre caratteristiche di cui dispone questo metodo.




Utenti connessi: 13426