- Leggere dati da un database -
 
COSA SERVE PER QUESTO TUTORIAL
Download | Chiedi sul FORUM | Glossario Conoscenza dell'HTML - un server che supporti la tecnologia ASP .NET - facoltativamente un editor provvisto di intellisense (es. Macromedia Dreamweaver)
La query SQL SELECT per leggere dati da un database

SELECT
Un semplice esempio per spiegare come leggere dati da un database Access.

In questo tutorial vedremo come ottenere i dati da un database di Access utilizzando Microsoft Jet e come utilizzarli attraverso un semplice programma che stampa l'intero contenuto del database.
1) Creato un nuovo file .aspx per prima cosa dobbiamo importare gli spazi di nome necessari per l'accesso ai database scrivendo nel file:


<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Oledb" %>

2) Ora dobbiamo specificare il database a cui vogliamo accedere attraverso Jet (il fornitore di accesso ai database) creando un oggetto OleDbConnection:

<script language="VB" runat="server">
Dim objConn As New OleDbConnection _
("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source =" & Server.MapPath("db.mdb"))

3) Per ottenere i dati presenti in un database si utilizza l'oggetto OleDbDataAdapter (adattore di dati) con parametri la stringa SQL (Structured Query Language) e l'oggetto OleDbConnection appena creato. La stringa SQL comunica a Jet che filtri deve utilizzare nella restituzione dei dati. La parola chiave per restituire dati è SELECT. La sintassi è:
SELECT NomeColonna1, NomeColonna2 FROM NomeTabella

NomeColonna1 e 2 sono i nomi dei campi che si desidera richiedere, in alternativa è possibile richiedere tutte le colonne utilizzando l'asterisco (*). È possibile inoltre specificare una clausola WHERE che permetterebbe di selezionare solo alcuni dati secondo particolari criteri, per ulteriori informazioni clicca qui. Per semplicità noi non useremo alcun filtro nella creazione dell'oggetto OleDbDataAdapter, quindi dovremo scrivere:


Dim objCmd As New OleDbDataAdapter _
("SELECT * FROM nometabella1", objConn)

4) Adesso dichiariamo un Dataset, un oggetto che viene utilizzato per contenere i dati presi dal database:
Dim ds As New DataSet()
Il DataSet contiene diversi oggetti DataTable che corrispondono alle tabelle richieste che vengono identificati con i loro nomi o con dei numeri; per accedere a una singola cella si utilizza la proprietà Rows specificando nella prima parentesi il numero della riga e nella seconda il numero della colonna (es. ds.Tables(0).Rows(2)(1)).
5) Bene ora abbiamo completato la parte dichiarativa, passiamo alla Sub Page_Load:
Sub Page_Load(obj as Object, e as EventArgs)
6) Finalmente possiamo riempire il DataSet con i dati utilizzando la funzione Fill dell'oggetto objCmd precedentemente creato:
    ObjCmd.Fill(ds)
7) Infine col codice che segue verranno stampati tutti i contenuti delle varie colonne grazie a tre cicli For, il primo lista tutte le tabelle, il secondo tutte le colonne della tabella e il terzo stampa il contenuto delle celle di quella colonna:

    Dim C1 As Integer
    Dim C2 As Integer
    Dim C3 As Integer
    For C1 = 0 To ds.Tables.Count - 1
        Response.Write("tabella " & C1 & "<br>")
        For C2 = 0 To ds.Tables(C1).Columns.Count - 1
            Response.Write("--" & ds.Tables(C1).Columns(C2).ColumnName & "<br>")
            For C3 = 0 To ds.Tables(C1).Rows.Count - 1
                Response.Write("----" & ds.Tables(C1).Rows(C3)(C2) & "<br>")
            Next
        Next
    Next

8) Ecco come dovrebbe apparire il vostro file .aspx:

<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Oledb" %>
<script language="VB" runat="server">
Dim objConn As New OleDbConnection _
("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source =" & Server.MapPath("db.mdb"))
Dim objCmd As New OleDbDataAdapter _
("SELECT * FROM nometabella1", objConn)
Dim ds As New Dataset()
Sub Page_Load(obj as Object, e as EventArgs)
    ObjCmd.Fill(ds)
    Dim C1 As Integer
    Dim C2 As Integer
    Dim C3 As Integer
    For C1 = 0 To ds.Tables.Count - 1
        Response.Write("tabella " & C1 & "<br>")
        For C2 = 0 To ds.Tables(C1).Columns.Count - 1
            Response.Write("--" & ds.Tables(C1).Columns(C2).ColumnName & "<br>")
            For C3 = 0 To ds.Tables(C1).Rows.Count - 1
                Response.Write("----" & ds.Tables(C1).Rows(C3)(C2) & "<br>")
            Next
        Next
    Next
End Sub
</script>

 

<< INDIETRO by VeNoM00