ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

Μάθετε την Τεχνολογία ADO

 

Εισαγωγή στην Τεχνολογία ADO

Μπορούμε να χρησιμοποιήσουμε την τεχνολογία ADO για να έχουμε πρόσβαση σε βάσεις δεδομένων μέσα από τις ιστοσελίδες μας.

 

Τι Είναι η ADO

 

Πρόσβαση σε μια Βάση Δεδομένων από μια Σελίδα ASP

Ο κανονικός τρόπος για να έχουμε πρόσβαση σε μια βάση δεδομένων μέσα από μια σελίδα ASP είναι ο εξής :

  1. Δημιουργία μιας σύνδεσης ADO με μια βάση δεδομένων.
  2. Άνοιγμα της σύνδεσης της βάσης δεδομένων (database connection).
  3. Δημιουργία ενός ADO recordset.
  4. Άνοιγμα του recordset.
  5. Εξαγωγή των δεδομένων που θέλουμε από το recordset.
  6. Κλείσιμο του recordset.
  7. Κλείσιμο της σύνδεσης.

 

Σύνδεση Βάσης Δεδομένων (Database Connection)

Πριν μπορέσουμε να έχουμε πρόσβαση σε μια βάση δεδομένων μέσα από μια ιστοσελίδα, πρέπει πρώτα να δημιουργήσουμε μια σύνδεση βάσης δεδομένων (database connection).

 

Δημιουργία μιας DSN-less Database Connection

Ο ευκολότερος τρόπος για να συνδεθούμε σε μια βάση δεδομένων είναι να χρησιμοποιήσουμε μια σύνδεση DSN-less, η οποία μπορεί να χρησιμοποιηθεί με οποιαδήποτε βάση δεδομένων της Microsoft Access σ’ ένα web site.

Για παράδειγμα, αν έχουμε μια βάση δεδομένων με όνομα northwind.mdb που βρίσκεται στον φάκελο c:/webdata/, μπορούμε να συνδεθούμε στη βάση δεδομένων με τον εξής ASP κώδικα :

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open "c:/webdata/northwind.mdb"

%>

Από το παραπάνω παράδειγμα βλέπουμε ότι πρέπει να προσδιορίσουμε τον Microsoft Access database driver (Provider) καθώς και τη φυσική διαδρομή (physical path) προς τη βάση δεδομένων.

 

Δημιουργία μιας ODBC Database Connection

Αν έχουμε μια ODBC βάση δεδομένων με όνομα northwind, μπορούμε να συνδεθούμε στη βάση δεδομένων με τον εξής ASP κώδικα :

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Open "northwind"

%>

Με μια ODBC σύνδεση, μπορούμε να συνδεθούμε με μια οποιαδήποτε βάση δεδομένων και σ’ οποιονδήποτε υπολογιστή στο δίκτυο για όσο καιρό είναι διαθέσιμη μια σύνδεση ODBC.

 

Μια ODBC Σύνδεση με Βάση Δεδομένων MS Access

Για να δημιουργήσουμε μια σύνδεση με μια βάση δεδομένων της MS Access κάνουμε τα εξής :

    1. Ανοίγουμε το εικονίδιο ODBC στον Πίνακα Ελέγχου.
    2. Επιλέγουμε την καρτέλα System DSN.
    3. Κάνουμε κλικ στο πλήκτρο Add…
    4. Επιλέγουμε το Microsoft Access Driver (*.mdb).
    5. Κάνουμε κλικ στο πλήκτρο Τέλος.
    6. Στο πλαίσιο διαλόγου ODBC Microsoft Access Setup, κάνουμε κλικ στο πλήκτρο Select… για να εντοπίσουμε τη βάση δεδομένων.
    7. Δίνουμε ένα όνομα στη βάση δεδομένων στο πλαίσιο κειμένου Data Source Name (DSN).
    8. Κάνουμε κλικ στο OK.

Πρέπει να έχουμε υπόψη μας ότι η παραπάνω διαδικασία πρέπει να γίνει σ’ έναν υπολογιστή όπου βρίσκεται το web site μας. Αν τρέχουμε τον Personal Web Server (PWS) ή τον Internet Information Server (IIS) στον δικό μας υπολογιστή, οι παραπάνω οδηγίες θα δουλέψουν καλά, αλλά αν το web site μας βρίσκεται σ’ έναν απομακρυσμένο (remote) server, είναι απαραίτητο να έχουμε φυσική πρόσβαση σ’ αυτόν τον server ή να ζητήσουμε από τον web host να το κάνει αυτό για μας.

 

Το Αντικείμενο ADO Connection

Το αντικείμενο ADO Connection χρησιμοποιείται για να καθιερώσουμε μια σύνδεση βάσης δεδομένων (database connection).

Σύνταξη :

conn.method

conn.property

Οι πιο κοινές Μέθοδοι και Ιδιότητες :

Μέθοδοι (Methods)

Ιδιότητες (Properties)

 

Το ADO Recordset

Για να μπορέσουμε να διαβάσουμε τα δεδομένα μιας βάσης δεδομένων, πρέπει αυτά πρώτα να φορτωθούν σ’ ένα recordset.

 

Δημιουργία ενός ADO Table Recordset

Αφού έχουμε δημιουργήσει μια σύνδεση βάσης δεδομένων ADO, μπορούμε να δημιουργήσουμε ένα ADO Recordset. Για παράδειγμα, αν έχουμε μια βάση δεδομένων με όνομα Northwind, μπορούμε να έχουμε πρόσβαση στον πίνακα Customers που ανήκει στη βάση δεδομένων με τις εξής εντολές :

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open "c:/webdata/northwind.mdb"

set rs = Server.CreateObject("ADODB.recordset")

rs.Open "Customers", conn

%>

 

Δημιουργία ενός ADO SQL Recordset

Μπορούμε επίσης να έχουμε πρόσβαση στα δεδομένα του πίνακα Customers χρησιμοποιώντας SQL, ως εξής :

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open "c:/webdata/northwind.mdb"

set rs = Server.CreateObject("ADODB.recordset")

rs.Open "Select * from Customers", conn

%>

 

Εξαγωγή Δεδομένων από ένα Recordset

Αφού ανοίξουμε ένα recordset, μπορούμε να εξάγουμε δεδομένα απ’ αυτό. Αν υποθέσουμε ότι έχουμε μια βάση δεδομένων με όνομα Northwind, τότε μπορούμε να έχουμε πρόσβαση στον πίνακα Customers της βάσης δεδομένων με τις εξής εντολές :

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open "c:/webdata/northwind.mdb"

set rs = Server.CreateObject("ADODB.recordset")

rs.Open "Select * from Customers", conn

for each x in rs.fields

response.write(x.name)

response.write(" = ")

response.write(x.value)

next

%>

 

Το Αντικείμενο ADO Recordset

Το αντικείμενο Recordset (Recordset Object) χρησιμοποιείται για να περιέχει ένα σύνολο εγγραφών από έναν πίνακα μιας βάσης δεδομένων.

Σύνταξη :

rs.method

rs.property

Οι πιο κοινές Μέθοδοι και Ιδιότητες :

Μέθοδοι (Methods)

Ιδιότητες (Properties)

 

Εμφάνιση ADO

Ο πιο κοινός τρόπος για να εμφανίσουμε τα δεδομένα ενός recordset, είναι να τα εμφανίσουμε σ’ έναν html πίνακα.

Παραδείγματα

Εμφάνιση Εγγραφών

Αυτό το παράδειγμα δείχνει πώς να δημιουργήσουμε πρώτα μια σύνδεση βάσης δεδομένων (database connection), μετά ένα recordset και τέλος πώς να εμφανίσουμε τα δεδομένα σε μια σελίδα HTML.

<html>

<body>

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open(Server.Mappath("northwind.mdb"))

set rs = Server.CreateObject("ADODB.recordset")

rs.Open "Select * from Customers", conn

do until rs.EOF

for each x in rs.Fields

Response.Write(x.name)

Response.Write(" = ")

Response.Write(x.value & "<br />")

next

Response.Write("<br />")

rs.MoveNext

loop

rs.close

conn.close

%>

</body>

</html>

Εμφάνιση Εγγραφών σ’ έναν HTML Πίνακα

Αυτό το παράδειγμα δείχνει πώς να εμφανίσουμε τα δεδομένα από τον πίνακα της βάσης δεδομένων σ’ έναν HTML πίνακα.

<html>

<body>

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open(Server.Mappath("northwind.mdb"))

set rs = Server.CreateObject("ADODB.recordset")

rs.Open "SELECT Companyname, Contactname FROM

Customers", conn

%>

<table border="1" width="100%">

<%do until rs.EOF%>

<tr>

<%for each x in rs.Fields%>

<td><%Response.Write(x.value)%></td>

<%next

rs.MoveNext%>

</tr>

<%loop

rs.close

conn.close

%>

</table>

</body>

</html>

Προσθήκη Επικεφαλίδων (headers) σε Πίνακα

Αυτό το παράδειγμα δείχνει πώς να προσθέσουμε επικεφαλίδες (headers) στον HTML πίνακα για να τον κάνουμε πιο ευανάγνωστο.

<html>

<body>

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open(Server.Mappath("northwind.mdb"))

set rs = Server.CreateObject("ADODB.recordset")

sql="SELECT Companyname,Contactname FROM Customers"

rs.Open sql, conn

%>

<table border="1" width="100%">

<tr>

<%for each x in rs.Fields

response.write("<th>" & x.name & "</th>")

next%>

</tr>

<%do until rs.EOF%>

<tr>

<%for each x in rs.Fields%>

<td><%Response.Write(x.value)%></td>

<%next

rs.MoveNext%>

</tr>

<%loop

rs.close

conn.close

%>

</table>

</body>

</html>

Εμφάνιση Εγγραφών από μια Βάση Δεδομένων

Αφού ανοιχθεί ένα recordset, μπορούμε να εμφανίσουμε τα δεδομένα του recordset σε μια HTML σελίδα.

<html>

<body>

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open(Server.Mappath("northwind.mdb"))

set rs = Server.CreateObject("ADODB.recordset")

sql = "SELECT Companyname, Contactname FROM

Customers"

rs.Open sql, conn

%>

<table border="1" width="100%">

<tr>

<%for each x in rs.Fields

response.write("<th>" & x.name & "</th>")

next%>

</tr>

<%do until rs.EOF%>

<tr>

<%for each x in rs.Fields%>

<td><%Response.Write(x.value)%></td>

<%next

rs.MoveNext%>

</tr>

<%loop

rs.close

conn.close

%>

</table>

</body>

</html>

Αν υποθέσουμε ότι έχουμε μια βάση δεδομένων με όνομα Northwind, μπορούμε να εμφανίσουμε τα δεδομένα του πίνακα Customers με τις εξής εντολές :

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open "c:/webdata/northwind.mdb"

set rs = Server.CreateObject("ADODB.recordset")

rs.Open "Select * from Customers", conn

do until rs.EOF

for each x in rs.Fields

Response.Write(x.name)

Response.Write(" = ")

Response.Write(x.value & "<br />")

next

rs.MoveNext

loop

rs.close

conn.close

%>

 

Εμφάνιση Εγγραφών σ’ έναν Πίνακα

Μπορούμε επίσης να εμφανίσουμε τα δεδομέναν του πίνακα Customers μέσα σ’ έναν HTML πίνακα με τις εξής εντολές :

<%

set conn=Server.CreateObject("ADODB.Connection")

conn.Provider="Microsoft.Jet.OLEDB.4.0"

conn.Open "c:/webdata/northwind.mdb"

set rs = Server.CreateObject("ADODB.recordset")

rs.Open "Select * from Customers", conn

%>

<table border="1" width="100%">

<%do until rs.EOF%>

<tr>

<%for each x in rs.Fields%>

<td><%Response.Write(x.value)%></td>

<%next

rs.MoveNext%>

</tr>

<%loop

rs.close

conn.close

%>

</table>

 

ADO και SQL

Με την SQL, τα δεδομένα που πρέπει να εμφανισθούν σε μια HTML σελίδα μπορούν να φιλτραριστούν και να ταξινομηθούν.

Παραδείγματα

Εμφάνιση μόνο Επιλεγμένων Εγγραφών

Αυτό το παράδειγμα δείχνει πώς να εμφανίσουμε δεδομένα που ικανοποιούν ένα συγκεκριμένο κριτήριο.

<html>

<body>

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider="Microsoft.Jet.OLEDB.4.0"

conn.Open(Server.Mappath("northwind.mdb"))

set rs = Server.CreateObject("ADODB.recordset")

sql = "SELECT Companyname, Contactname FROM

Customers WHERE CompanyName LIKE 'A%'"

rs.Open sql, conn

%>

<table border="1" width="100%">

<tr>

<%for each x in rs.Fields

response.write("<th>" & x.name & "</th>")

next%>

</tr>

<%do until rs.EOF%>

<tr>

<%for each x in rs.Fields%>

<td><%Response.Write(x.value)%></td>

<%next

rs.MoveNext%>

</tr>

<%loop

rs.close

conn.close

%>

</table>

</body>

</html>

Ταξινόμηση των Εγγραφών με Βάση ένα Συγκεκριμένο Πεδίο

Αυτό το παράδειγμα δείχνει πώς να ταξινομήσουμε τα δεδομένα με βάση ένα συγκεκριμένο πεδίο.

<html>

<body>

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open(Server.Mappath("northwind.mdb"))

set rs = Server.CreateObject("ADODB.recordset")

sql = "SELECT Companyname, Contactname FROM

Customers ORDER BY CompanyName"

rs.Open sql, conn

%>

<table border="1" width="100%">

<tr>

<%for each x in rs.Fields

response.write("<th>" & x.name & "</th>")

next%>

</tr>

<%do until rs.EOF%>

<tr>

<%for each x in rs.Fields%>

<td><%Response.Write(x.value)%></td>

<%next

rs.MoveNext%>

</tr>

<%loop

rs.close

conn.close

%>

</table>

</body>

</html>

 

Εμφάνιση Επιλεγμένων Δεδομένων

<%

set conn=Server.CreateObject("ADODB.Connection")

conn.Provider="Microsoft.Jet.OLEDB.4.0"

conn.Open "c:/webdata/northwind.mdb"

set rs=Server.CreateObject("ADODB.recordset")

sql="SELECT * FROM Customers WHERE CompanyName

LIKE 'A%'"

rs.Open sql, conn

%>

<table border="1" width="100%">

<%do until rs.EOF%>

<tr>

<%for each x in rs.Fields%>

<td><%Response.Write(x.value)%></td>

<%next

rs.MoveNext%>

</tr>

<%loop

rs.close

conn.close

%>

</table>

 

Ταξινόμηση Δεδομένων

<%

set conn=Server.CreateObject("ADODB.Connection")

conn.Provider="Microsoft.Jet.OLEDB.4.0"

conn.Open "c:/webdata/northwind.mdb"

set rs=Server.CreateObject("ADODB.recordset")

sql="SELECT * FROM Customers ORDER BY

CompanyName"

rs.Open sql, conn

%>

<table border="1" width="100%">

<%do until rs.EOF%>

<tr>

<%for each x in rs.Fields%>

<td><%Response.Write(x.value)%></td>

<%next

rs.MoveNext%>

</tr>

<%loop

rs.close

conn.close

%>

</table>

 

Εμφάνιση, Αλλαγή, Υποβολή και Διαγραφή Εγγραφών

<html>

<head><title> List Database </title></head>

<body>

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.provider = "Microsoft.Jet.OLEDB.4.0"

conn.open(server.mappath("database.mdb"))

set rs = Server.CreateObject("ADODB.Recordset")

rs.open "Select * from tblGuestBook" , conn

%>

<h2> List Database (click on button to edit) </h2>

<table border="1" width="100%">

<tr>

<%

for each x in rs.Fields

response.write("<th>" & x.name & "</th>")

next

%>

</tr>

<%do until rs.EOF%>

<tr>

<%

for each x in rs.Fields

if x.name = "no" then%>

<form method="post" action =

"demo_db_edit.asp">

<td><input type="submit" name="no"

value="<%=x.value%>"></td>

</form>

<%else%>

<td><%Response.Write(x.value)%></td>

<%end if

next

rs.MoveNext

%>

</tr>

<%

loop

rs.close

set rs = nothing

conn.close

set conn = nothing

%>

</table>

<p><a href="showcode.asp?source=demo_db_list.asp">

View source code on how to list a database table in an HTML table </a></p>

<p><b> Note : </b> If you click on the numbers in the "no" column you will be taken to a new page. On that page you will be able to look at the source code on how to create input fields based on the fields from one record in the database table. </p>

<p><a href="ado_demo.asp"> Επιστροφή στην προηγούμενη σελίδα</a></p>

</body>

</html>

 

Προσθήκη Εγγραφών σε Βάση Δεδομένων

<html>

<head>

<title> Προσθήκη σε Βάση Δεδομένων </title>

</head>

<body>

<%

set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "Microsoft.Jet.OLEDB.4.0"

conn.Open(Server.mappath("database.mdb"))

set rs = Server.CreateObject("ADODB.Recordset")

rs.Open "select * from tblGuestBook", conn

%>

<h2> Προσθήκη Εγγραφών </h2>

<form method="post" action="demo_db_new.asp">

<table>

<%

for each x in rs.Fields

if x.name <> "no" and x.name <> "dateadded" then%>

<tr>

<td><%=x.name%></td>

<td><input name="<%=x.name%>"

value="N/A"></td>

<%

end if

next

rs.close

conn.close

%>

</tr></table>

<p><input type="submit" name="action"

value="Add Record"> </p>

</form>

<p><a href="showcode.asp?source=demo_db_add.asp">

View source code on how to create input fields based on the

fields in the database table</a>. </p>

<p><b> Note : </b> If you click on "Add Record" you will be

taken to a new page. On that page you will be able to look at the

source code on how to add a new record to a database table.

</p>

<p><a href="ado_demo.asp"> Επιστροφή στην προηγούμενη

σελίδα</a></p>

</body>

</html>

 

 

back.gif (9867 bytes)

Επιστροφή