ADO in JavaScript (AdoJS) - Yen
Download
Report
Transcript ADO in JavaScript (AdoJS) - Yen
ActiveX Data Object (ADO)
in JavaScript
J.L.Wang, Yen-Cheng Chen
Dept. of Infomation Management
Ming-Chuan University
Jan. 1999
Outlines
Overview
Object
model of ADO
ADO techniques
ADO Overview
ADO
allow us to write code in a
scripting language that can interact with
a database
The missing link between the web page
and almost any kind of stored data
ADO Data Interface
To
interface with database through ODBC
Use it with any data source for which an
ODBC driver is available
ODBC
Open
DataBase Connectivity
Data Provider
Active Server Page
Active Database
Component
ADO
Data
Source
ODBC
Driver
Data Provider
Interface
ADO Object Model
Connection
Object
Establish
an active connection that allows
us to gain access to data stored in a
database
Command
Object
Obtain
records, excute SQL queries, or
manipulate the data
Recordset
Access
Object
the data that is returned from
executing an SQL query
ADO Object Hierarchy
Collection
Object
Connection Object
Recordset Object
Field collection
Property collection
Command object
Parameter collection
Property collection
Property collection
Error collection
Connection Object
Connection
Represent
the physical link between applications
and the remote database server
All communications between Recordset or
Commands and the back-end database is
negotiated through the connection
Transaction
Make
the interaction with the database bulletproof
A series of changes can be grouped together to
look like a single, all-or-nothing (atomic) change
Connection Object: Basic Flow
Create an instance of the Connection object
global.asa: Session_onStart or Application_onStart
Open a connection: data source name (DSN)
Execute commands:SQL command
Close the connection
Release the object resource
Connection Object: Basic Commands
ObjCon=Server.CreateObject(“ADODB.Conneciton”)
Create an instance of the Connection object
ObjCon.Open(“DSN”):Open a connection
ObjCon.Execute(“SQL COMMAND”)
Execute an execution, the result can be stored in a recordset
ObjCon.Close(): Close the connection
ObjCon.BeginTrans(): Begins a new transaction
ObjCon.CommitTrans(): Saves any changes and ends the
transaction, May also start a new transaction
ObjCon.RollbackTrans(): Cancel any changes and ends the
transaction. May also start a new transaction
<%@language=JScript%>
<%
conn=Server.CreateObject("ADODB.Connection");
conn.Open("ExampleAdoDSN");
rs=conn.Execute("select * from Books");
Response.Write("<center><h2>Books</h2>");
Response.Write("<table border=1><tr>");
cnt=rs.Fields.Count;
for (i=0;i<cnt;i++) {
Response.Write("<th>"+rs(i).Name+"</th>");
}
Response.Write("</tr>\n");
while (! rs.EOF) {
Response.Write("<tr>");
for (i=0;i<cnt;i++) {
Response.Write("<td>"+rs(i)+"</td>");
}
Response.Write("</tr>\n");
rs.MoveNext();
}
Response.Write("</table>\n");
Response.Write("</center>");
conn.Close();
conn=null; %>
Connection Scope
global.asa
Session_onStart
function Session_onStart() {
ObjCon=Server.CreateObject(“ADODB.Conneciton”)
...
}
Application_onStart
function Application_onStart() {
ObjCon=Server.CreateObject(“ADODB.Conneciton”)
...
}
Connection Transaction
Perform a series of updates on a data source
Get the system to store up all the changes, and then commit them in one go
Before actually commit the change, the chnages can be rolling back
ObjCon=Server.CreateObject(“ADODB.Conneciton”)
ObjCon.Open("DSN")
ObjCon.BeginTrans()
ObjCon.Execute(“SQL COMMAND”)
If (Conditions) {
ObjCon.CommitTrans
// Serve any changes
}
Else {
ObjConn.RollbackTrans
// Cancel any changes
}
}
ObjCon.Close()
Command Object
Provide methods and properties to manipulate individual commands
Methods
CreateParameter: Create a new Parameter object that can
be appended to the Parameters collections
Execute: Execute the SQL statement or stored procedure
Property
ActiveConnection: Active one connection to be used by
command object (DSN)
CommandText: Text of a command to be execute
CommandTimeout: No. of second for finishing a command
CommandType:
adCmdText(1), adCmdTable(2), adCmdStoreProc(3),adCmdUnknown(3)
Prepared:
Whether to create a prepare statement before
execution (a command could be executed for multiple times)
Command Object: Basic Commands
Create an instance of the Command object
Create an active connection
ObjCmd.ActiveConnection = “DSN”
ObjCmd.ActiveConnection = someConnectionObject
Execution a query
ObjCmd=Server.CreateObject(“ADOBE.Command”)
ObjCmd.CommandText = “SQL Command”
ObjCmd.CommandType = 1
// SQL query
ObjCmd.Prepared = true
// Compile the statement
ObjCmd.Execute()
Release the resource used
ObjCmd.ActiveConnection = null
<%@language=JScript%>
<%
cmd=Server.CreateObject("ADODB.Command");
cmd.ActiveConnection="ExampleAdoDSN";
cmd.CommandText="select * from Books";
rs=cmd.Execute();
cnt=rs.Fields.Count;
Response.Write("<center><h2>Books</h2>");
Response.Write("<table border=1><tr>");
for (i=0;i<cnt;i++) {
Response.Write("<th>"+rs(i).Name+"</th>");
}
Response.Write("</tr>\n");
while (! rs.EOF) {
Response.Write("<tr>");
for (i=0;i<cnt;i++) {
Response.Write("<td>"+rs(i)+"</td>");
}
Response.Write("</tr>\n");
rs.MoveNext();
}
Response.Write("</table>\n");
Response.Write("</center>");
cmd=null;
%>
function GenerateTable(rs, tableTitle) {
cnt=rs.Fields.Count;
Response.Write("<h2>tableTitle</h2>");
Response.Write("<table border=1><tr>");
for (i=0;i<cnt;i++) {
Response.Write("<th>"+rs(i).Name+"</th>");
}
Response.Write("</tr>\n");
while (! rs.EOF) {
Response.Write("<tr>");
for (i=0;i<cnt;i++) {
Response.Write("<td>"+rs(i)+"</td>");
}
Response.Write("</tr>\n");
rs.MoveNext();
}
Response.Write("</table>\n");
}
<%@language=JScript%>
<%
function GenerateTable(rs, tableTitle) {
...
}
cmd=Server.CreateObject("ADODB.Command");
cmd.ActiveConnection="ExampleAdoDSN";
cmd.CommandText="select * from Books";
rs=cmd.Execute();
GenerateTable(rs, "Books");
%>
Recordset Object
Assign the query results to a Recordset object
Like a table in memory
Can create recorsets containing the data returned
from that query
Can even create a recordset directly, without
having to open a connection or execute a
command first
Recordset Fundamentals
Open
the recordset
Set rs=Server.CreateObject(“ADODB.Recordset”)
rs.Open(“select * from Books”, “DSN=ExampleAdoDSN;”)
Access
the data field
firstname = rs(“fieldname”)
firstname = rs.Fields(“fieldname”)
n = rs.Fields.Count // get the number of fields
Navigate
the records
while (! rs.EOF) {
// do something with the data
rs.MoveNext()
}
<%@language=JScript%>
<%
rs=Server.CreateObject("ADODB.Recordset");
conn=Server.CreateObject("ADODB.Connection");
conn.Open("ExampleAdoDSN");
rs.Open("select * from Books", conn);
cnt=rs.Fields.Count;
Response.Write("<center><h2>Books</h2>");
Response.Write("<table border=1><tr>");
for (i=0;i<cnt;i++) {
Response.Write("<th>"+rs(i).Name+"</th>");
}
Response.Write("</tr>\n");
while (! rs.EOF) {
Response.Write("<tr>");
for (i=0;i<cnt;i++) {
Response.Write("<td>"+rs(i)+"</td>");
}
Response.Write("</tr>\n");
rs.MoveNext();
}
Response.Write("</table>\n");
Response.Write("</center>");
...
%>
Recordset: Properties
AbsolutePage: Page of current position
AbsolutePosition: The original position of the current record
ActiveConnection: Active connection object
BOF: Before of first record ( True or False )
Bookmark: Return/set a bookmark
CacheSize: Number of records cached
CursorLocation: Server, client, or client batch
CursorType: Forwarde, static, dynamic, keyset
EditMode: The editing status ( backward compatible with DAO)
EOF: End of file ( True or False )
Filter: Hide types of records
LockType: Record locking for edits or updates
MaxRecords: Maximum records retrieved
PageSize: Number of pages total
RecordCount: Number of total records
Source: Source command
Status: Status of the last action
CursorType
Dynamic: adOpenDynamic
Fully updateable recordset
All actions made by other users while the recordset is open are visible
All types of movement ( up and down )
Keyset: adOpenKeyset
Updateable recordset
It prevents access to records that other users add after it was created
All types of movement
Static: adOpenStatic
Static non-updateable recordset ( retrieve data )
Changes made by other users while the recordset is open aren’t visible
All types of movement
Forward-only: adOpenForwardOnly (default)
Static non-updateable recordset
Only Scroll forward through the records (MoveNext, GetRows)
actions: additions, changes & deletion
Recordset: Method
AddNew: Create a new record in an updateable recordset
CancelBatch: Cancels a pending batch update
CancelUpdate: Cancel any changes made to the current or a new record
Clone: Create identical Recordset
Close: Close an open recordset
Delete: Delete the current record
GetRows: Get multiple records
Move: Move the position of the current record
MoveFirst, MoveLast, MoveNext, MovePrevious
NextRecordset: Move to the next set in multi-set query
Open: Establish a connection and execute the query
Requery: Refresh the data ( re-execute the original query )
Resync: Synchronize data with server
Supports: Determine supported features
Update: Save any changes made to the current record
UpdateBatch: Write all pending batch updates to disk
Recordset: Create Recordset Directly
Create a recordset
ObjRS = Server.CreateObject(“ADODB.Recordset”)
Fill the new recordset with values from the data source
ObjRS.Open(Source,ActiveConnection,CursorType,LockType,Options)
Source: A Command object, SQL statement, table name or stored procedure
ActiveConnection: Data Source Name
CursorTYpe: adOpenForwardOnly (default)
LockType: adLockReadOnly (default)
Options: The type of query or table represented by Source
adCmdUnknows(0): Unknown(default)
adCmdText(1): SQL statement
adCmdText(2): Table name for creating a recordset
adCmdStoredProc(3): A stored procedure
Recordset: Moving
ObjRS.Move(n): Moving
-n : move backward n records
n: forward ( interger )
ObjRS.AbsolutePosition
the current record number
Return value
-1 (adPosUnknown: No current record (be deleted)
-2 (adPosBOF): Before the first record
-3 (adPosEOF): After the last record
Recordset: Connection
ObjCon=Server.CreateObject(“ADODB.Conneciton”)
ObjCon.Open(“DSN”)
ObjRS = ObjCon.Execute (“SQL COMMAND”)
….
Recordset: Command
ObjCmd = Server.CreateObject(“ADOBE.Command”)
ObjCmd.ActiveConnection = “DSN”
ObjCmd.CommandText = “SELECT * FROM JobCon”
ObjCmd.CommandType = adCmdText
ObjRS = ObjCmd.Execute()
…
Recordset:Table/Command
ObjCmd = Server.CreateObject(“ADOBE.Command”)
ObjCmd.ActiveConnection = “DSN”
ObjRS = ObjCmd.Execute (“TableName”,,adCmdTable)
...
ObjRS.Close()
…
ObjCmd = Server.CreateObject(“ADOBE.Command”)
ObjCmd.ActiveConnection = “DSN”
ObjCmd.CommandText = “TableName”
ObjCmd.CommandType = adCmdTable
ObjRS = ObjCmd.Execute()
…
ObjRS .Close()
…
Recordset:Iteration
ObjCon = Server.CreateObject(“ADODB.Connection”)
ObjCon.Open(“DSN”)
ObjRS = ObjCon.Execute(“TableName”, , adCmdTable)
ObjRS.MoveFirst()
While (! ObjRS.EOF) {
…
ObjRS.MoveNext()
}