ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ
Μάθετε την Τεχνολογία ADO
Μπορούμε να χρησιμοποιήσουμε την τεχνολογία ADO για να έχουμε πρόσβαση σε βάσεις δεδομένων μέσα από τις ιστοσελίδες μας.
Πρόσβαση σε μια Βάση Δεδομένων από μια Σελίδα ASP
Ο κανονικός τρόπος για να έχουμε πρόσβαση σε μια βάση δεδομένων μέσα από μια σελίδα ASP είναι ο εξής :
Σύνδεση Βάσης Δεδομένων (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 κάνουμε τα εξής :
Πρέπει να έχουμε υπόψη μας ότι η παραπάνω διαδικασία πρέπει να γίνει σ’ έναν υπολογιστή όπου βρίσκεται το web site μας. Αν τρέχουμε τον Personal Web Server (PWS) ή τον Internet Information Server (IIS) στον δικό μας υπολογιστή, οι παραπάνω οδηγίες θα δουλέψουν καλά, αλλά αν το web site μας βρίσκεται σ’ έναν απομακρυσμένο (remote) server, είναι απαραίτητο να έχουμε φυσική πρόσβαση σ’ αυτόν τον server ή να ζητήσουμε από τον web host να το κάνει αυτό για μας.
Το αντικείμενο ADO Connection χρησιμοποιείται για να καθιερώσουμε μια σύνδεση βάσης δεδομένων (database connection).
Σύνταξη :
conn.method
conn.property
Οι πιο κοινές Μέθοδοι και Ιδιότητες :
Μέθοδοι (Methods)
Ιδιότητες (Properties)
Για να μπορέσουμε να διαβάσουμε τα δεδομένα μιας βάσης δεδομένων, πρέπει αυτά πρώτα να φορτωθούν σ’ ένα 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
%>
Το αντικείμενο Recordset (Recordset Object) χρησιμοποιείται για να περιέχει ένα σύνολο εγγραφών από έναν πίνακα μιας βάσης δεδομένων.
Σύνταξη :
rs.method
rs.property
Οι πιο κοινές Μέθοδοι και Ιδιότητες :
Μέθοδοι (Methods)
Ιδιότητες (Properties)
Ο πιο κοινός τρόπος για να εμφανίσουμε τα δεδομένα ενός 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>
Με την 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>