asp - asp.net - aspcode.it

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

  > > Articoli

ADOX e VBScript

Data di pubblicazione: 15/01/2002        Voto della community: 3,87 (Votanti: 31)


Microsoft® ActiveX® Data Objects Extensions for Data Definition Language and Security (ADOX) è un'estensione degli oggetti e del modello di programmazione ADO. ADOX include oggetti per la creazione e la modifica di schemi, nonché per la protezione. Poiché si tratta di un approccio basato su oggetti alla gestione degli schemi, è possibile scrivere codice in grado di interagire con varie origini dati indipendentemente dalle differenze nella sintassi nativa.

Il provider Microsoft OLE DB per il modulo di gestione di database Microsoft Jet supporta pienamente ADOX. Alcune funzionalità di ADOX potrebbero non essere supportate, a seconda del provider di dati utilizzato.

Il modello di oggeti ADOX si riassume con il seguente diagramma:

CATALOG
|
+--TABLES------TABLE
|              |
|              +--COLUMNS--COLUMN
|              |
|              +--INDEXES--INDEX
|              |           |
|              |           +--COLUMNS--COLUMN
|              |
|              +--KEYS-----KEY
|                          |
|                          +--COLUMNS--COLUMN
|
+--GROUPS------GROUP
|              |
|              +--USERS----USER
|
+--USERS-------USER
|              |
|              +--GROUPS---GROUP
|
+--PROCEDURES--PROCEDURE
|              |
|              +--COMMAND
|
+--VIEWS-------VIEW
               |
               +--COMMAND


dove per ogni oggetto TABLE, INDEX e COLUMN è disponibile un insieme PROPERTIES ADO

TABLE
|
| INDEX
| |
| | COLUMN
| | |
+-+-+-PROPERTIES-PROPERTY

PRATICA

Vediamo subito come implementare l'ADOX nelle nostre pagine ASP/VBScript.
Realizziamo un semplice script (adox_newdb.asp) per creare un database ACCESS al volo in remoto:

<%@ Language=VBScript%>
<%
'Impostiamo la dichiarazione obbligatoria delle variabili
Option Explicit

'::Crea nuovo DB
Sub CreateDatabaseX(sActiveConnection)

  'in caso di errore prosegui lo script
  On Error Resume Next

  'dichiaro due variabili di comodo
  Dim sError, sDBName

  'creo l'oggetto ADOX Catalog
  Dim objCatalog

  Set objCatalog = Server.CreateObject("ADOX.Catalog")

  'creo il database
  objCatalog.Create sActiveConnection

  'se si è verificato un errore err sarà diverso da zero
  If err <> 0 Then
    sError = "Descrizione: " & Err.Description & "<br>" & VbCrLf
    sError = sError & "Errore numero: " & Err.Number & "<br>" & VbCrLf
    sError = sError & "Source: " & Err.Source & "<br>" & VbCrLf
    sError = sError & "SQLState: " & Err.SQLState & "<br>" & VbCrLf
    sError = sError & "Native Error: " & Err.NativeError & "<br>" & VbCrLf
    Response.Write sError
  Else
    'ricavo dalla stringa sActiveConnection il nome del db
    sDBName = Right(sActiveConnection, Len(sActiveConnection) - InStrRev(sActiveConnection, "\"))

    'confermo l'avvenuta creazione del database
    Response.Write "Il database " & sDBName & " è stato creato correttamente."
  End If

  'libero la memoria distruggendo l'oggetto Catalog
  Set objCatalog = Nothing

End Sub

'::Principale
Dim sDBPath
Dim sConnection

'specifico il percorso esatto ed il nome del db da creare
sDBPath = "c:\inetpub\wwwroot\asp\esempi\adox.mdb"

'imposto la stringa di connessione
sConnection = "Provider=Microsoft.Jet.OLEDB.4.0; data source=" & sDBPath

'richiamo la SUB che crea il nuovo DB
Call CreateDatabaseX(sConnection)
%>

Il codice appena trattato è molto semplice, la nostra SUB deve ricevere una stringa di connessione valida. La stringa di connessione utilizzata sfrutta il provider MS Jet 4.0.

<%
...
sDBPath = "c:\inetpub\wwwroot\asp\esempi\adox.mdb"
sConnection = "Provider=Microsoft.Jet.OLEDB.4.0; data source=" & sDBPath
...
%>

Se il percorso impostasto nella sDBPath non è corretto verrà generato un errore intercettato dal nostro codice.
Possiamo notare che non c'è stato bisogno di aprire alcuna connessione con il metodo connection.open, è bastato passare al metodo CREATE dell'oggetto CATALOG una stringa di connessione valida.

<%
...
objCatalog.Create sActiveConnection
...
%>

Riassumendo in breve, con l'oggetto CATALOG di ADOX possiamo creare un nuovo catalogo (database) con il metodo CREATE o aprire un catalogo (database) esistente con il metodo ACTIVECONNECTION (che vedremo nel prossimo esempio).

Dopo aver visto come creare al volo un database andremo a dimostrare come sia possibile creare una tabella al suo interno sfruttando l'oggetto TABLE di ADOX. Vediamo il codice della pagina adox_newtable.asp:

<%@ Language=VBScript%>
<%
'Impostiamo la dichiarazione obbligatoria delle variabili
Option Explicit

'::Crea nuova tabella
Sub CreateTableX(sActiveConnection, sTableName)

  'in caso di errore prosegui lo script
  On Error Resume Next

  'dichiaro due variabili di comodo
  Dim sError, sDBName

  'creo gli oggetti ADOX Catalog e Table
  Dim objCatalog, objTable

  Set objCatalog = server.createobject("ADOX.Catalog")
  Set objTable = server.createobject("ADOX.Table")

  'attivo la connessione al db
  objCatalog.ActiveConnection = sActiveConnection

  'imposto il nome della nuova tabella
  objTable.Name = sTableName

  'aggiorno la tabella
  objCatalog.Tables.Append objTable

  'se si è verificato un errore err sarà diverso da zero
  If err <> 0 Then
    sError = "Descrizione: " & Err.Description & "<br>" & VbCrLf
    sError = sError & "Errore numero: " & Err.Number & "<br>" & VbCrLf
    sError = sError & "Source: " & Err.Source & "<br>" & VbCrLf
    sError = sError & "SQLState: " & Err.SQLState & "<br>" & VbCrLf
    sError = sError & "Native Error: " & Err.NativeError & "<br>" & VbCrLf
    Response.Write sError
  Else
    'ricavo dalla stringa sActiveConnection il nome del db
    sDBName = Right(sActiveConnection, Len(sActiveConnection) - InStrRev(sActiveConnection, "\"))

    'confermo l'avvenuta creazione della tabella
    Response.Write "La tabella " & sTableName & " è stata creata correttamente nel"
    Response.Write " database " & sDBName
  End If

  'libero la memoria distruggendo gli oggetto Catalog e Table
  Set objTable = Nothing
  Set objCatalog = Nothing

End Sub

'::Principale
Dim sDBPath
Dim sConnection

'specifico il percorso esatto ed il nome del db in cui inserire la nuova tabella
sDBPath = "c:\inetpub\wwwroot\asp\esempi\adox.mdb"

'imposto la stringa di connessione
sConnection = "Provider=Microsoft.Jet.OLEDB.4.0; data source=" & sDBPath

'richiamo la SUB che crea la nuova tabella
Call CreateTableX(sConnection, "ADOXTable")
%>

In questo esempio entra in gioco l'oggetto ADOX Table. Attraverso i metodi di questo oggetto possiamo aggiungere una tabella (APPEND), accedere ad una tabella del database (ITEM), ricavare il numero di tabelle contenute nel database (COUNT), eliminare una tabella dal database (DELETE) e aggiornare gli oggetti dell'insieme in modo che rispecchino lo schema corrente del database (REFRESH).

Nel prossimo tutorial vedremo i procedimenti per aggiungere dei campi alla nostra tabella e per visualizzarne il contenuto.




Utenti connessi: 9444