ADO学习资料详细.docx
《ADO学习资料详细.docx》由会员分享,可在线阅读,更多相关《ADO学习资料详细.docx(46页珍藏版)》请在冰豆网上搜索。
ADO学习资料详细
ADO被用于从网页访问数据库。
您应当具备的基础知识
在继续学习之前,您需要对下面的知识有基本的了解:
∙WWW、HTML以及对网站构建的基本了解
∙ASP(动态服务器页面)
∙SQL(结构化查询语言)
如果您希望首先学习这些项目,请在我们的首页访问这些教程。
什么是ADO?
∙ADO是一项微软的技术
∙ADO指ActiveX数据对象(ActiveXDataObjects)
∙ADO是一个微软的Active-X组件
∙ADO会随微软的IIS被自动安装
∙ADO是一个访问数据库中数据的编程接口
从ASP页面访问数据库
从一个ASP页面内部访问数据库的通常的方法是:
1.创建一个到数据库的ADO连接
2.打开数据库连接
3.创建ADO记录集
4.从记录集提取您需要的数据
5.关闭记录集
6.关闭连接
在从某个网页访问数据之前,必须先建立一个数据库连接。
创建一个DSN-less数据库连接
连接到某一个数据库的最简单的方法是使用一个DSN-less连接。
DSN-less连接可被用于您的站点上的任何微软Access数据库。
假设您拥有一个名为"northwind.mdb"的数据库位于"c:
/webdata/"的web目录中,您可以使用下面的ASP代码连接到此数据库:
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
%>
注意,在上面的例子中,您必须规定微软的Access数据库驱动程序(Provider),以及此数据库在计算机上的物理路径。
创建一个ODBC数据库连接
假设您拥有一个名为"northwind"的ODBC数据库,您可以使用下面的ASP代码连接到此数据库:
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Open"northwind"
%>
通过一个ODBC连接,您可以连接到您的网络中任何计算机上的任何数据库,只要ODBC连接是可用的。
到MSAccess数据库的ODBC连接
下面为您讲解如何创建到一个MSAccess数据库的连接:
1.打开控制面板中的ODBC图标
2.选择系统ODBC选项卡
3.点击ODBC选项卡中的添加按钮
4.选择DrivertoMicrosoftAccess,然后点击完成按钮
5.在下一个窗口中点击“选择”按钮来定位数据库
6.为此数据库赋予一个数据源名称(DataSourceName,DSN)
7.点击"确定"
注意:
此配置必须在您的网站所在的计算机上完成。
假如您正在自己的计算机上运行PWS或者IIS,此架构是可以运行的,但是假如您的网站位于一台远程的服务器,您就必须拥有此服务器的物理访问权限,或者请您的web主机提供商为您做这些事情。
ADO连接对象(ADOConnectionObject)
ADO连接对象用来创建到某个数据源的开放连接。
通过此连接,您可以对此数据库进行访问和操作。
查看此连接对象的所有方法和属性。
如需读取数据库的数据,那么其中的数据必须首先被载入一个记录集中。
创建一个ADO表记录集(ADOTableRecordset)
在ADO数据库连接创建之后,如上一章所述,接下来就可以建立一个ADO记录集了。
假设我们有一个名为"Northwind"的数据库,我们可以通过下面的代码访问数据库中的"Customers"表:
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
setrs=Server.CreateObject("ADODB.recordset")
rs.Open"Customers",conn
%>
创建一个ADOSQL记录集(ADOSQLRecordset)
我们也可使用SQL访问"Customers"表中的数据:
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
setrs=Server.CreateObject("ADODB.recordset")
rs.Open"Select*fromCustomers",conn
%>
从记录集中提取数据
在记录集被打开后,我们可以从记录集中提取数据。
假设我们用一个名为"Northwind"的数据库,我们可以通过下面的代码访问数据库中"Customers"表:
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
setrs=Server.CreateObject("ADODB.recordset")
rs.Open"Select*fromCustomers",conn
foreachxinrs.fields
response.write(x.name)
response.write("=")
response.write(x.value)
next
%>
ADO记录集对象(ADORecordsetObject)
ADORecordset对象可被用来容纳来自数据库表的记录集。
查看ADORecordset对象的所有方法和属性。
显示来自记录集中的数据的最常用的方法,就是把数据显示在HTML表格中。
实例
显示记录
如何首先创建一个数据库连接,然后创建一个记录集,然后把其中的数据显示在HTML中。
在HTML表格中显示记录
如何把数据表中的数据显示在HTML表格中。
向HTML表格添加标题
如何向HTML表格添加标题,以使其可读性更强。
向HTML表格添加颜色
如何向HTML表格添加颜色,以使其更加美观。
显示字段名称和字段值
我们有一个名为"Northwind"的数据库,并且我们希望显示出"Customers"表中的数据(记得以.asp为扩展名来保存这个文件):
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
setrs=Server.CreateObject("ADODB.recordset")
rs.Open"SELECT*FROMCustomers",conn
dountilrs.EOF
foreachxinrs.Fields
Response.Write(x.name)
Response.Write("=")
Response.Write(x.value&"
")
next
Response.Write("
")
rs.MoveNext
loop
rs.close
conn.close
%>
在一个HTML表格中显示字段名称和字段的值
我们也可以通过下面的代码把表"Customers"中的数据显示在一个HTML表格中:
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
setrs=Server.CreateObject("ADODB.recordset")
rs.Open"SELECTCompanyname,ContactnameFROMCustomers",conn
%>
<%dountilrs.EOF%>
<%foreachxinrs.Fields%>
<%Response.Write(x.value)%> | <%next
rs.MoveNext%>
<%loop
rs.close
conn.close
%>
向HTML表格添加标题
我们希望为这个HTML表格添加标题,这样它就更易读了:
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
setrs=Server.CreateObject("ADODB.recordset")
sql="SELECTCompanyname,ContactnameFROMCustomers"
rs.Opensql,conn
%>
<%foreachxinrs.Fields
response.write("
"&x.name&" | ")next%>
---|
<%dountilrs.EOF%>
<%foreachxinrs.Fields%>
<%Response.Write(x.value)%> | <%next
rs.MoveNext%>
<%loop
rs.close
conn.close
%>
我们可以使用SQL来创建查询,这样就可以指定仅查看选定的记录和字段。
实例
显示"Companyname"以A开头的记录
如何仅仅显示"Customers"表的"Companyname"字段中以A开头的记录。
显示"Companyname"大于E的记录
如何仅仅显示"Customers"表的"Companyname"字段中大于E的记录。
仅显示西班牙的客户
如何仅仅显示"Customers"表中的西班牙客户。
让用户来选择筛选标准
让用户根据国别来选择客户
显示选定的数据
我们希望仅仅显示"Customers"表的"Companyname"字段中以A开头的记录:
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
setrs=Server.CreateObject("ADODB.recordset")
sql="SELECTCompanyname,ContactnameFROMCustomers
WHERECompanyNameLIKE'A%'"
rs.Opensql,conn
%>
<%foreachxinrs.Fields
response.write("
"&x.name&" | ")next%>
---|
<%dountilrs.EOF%>
<%foreachxinrs.Fields%>
<%Response.Write(x.value)%> | <%next
rs.MoveNext%>
<%loop
rs.close
conn.close%>
我们可以使用SQL来规定如何对记录集中的数据进行排序。
实例
根据指定的字段名处对记录进行升序排序
如何根据指定字段名对数据进行排序
根据指定的字段名处对记录进行降序排序
如何根据指定字段名对数据进行排序
让用户来选择根据哪列进行排序
让用户来选择根据哪列进行排序
对数据进行排序
我们希望显示"Customers"表中的"Companyname"和"Contactname"字段,并根据"Companyname"进行排序(请记得用.asp为后缀保存):
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
setrs=Server.CreateObject("ADODB.recordset")
sql="SELECTCompanyname,ContactnameFROM
CustomersORDERBYCompanyName"
rs.Opensql,conn
%>
<%foreachxinrs.Fields
response.write("
"&x.name&" | ")next%>
---|
<%dountilrs.EOF%>
<%foreachxinrs.Fields%>
<%Response.Write(x.value)%> | <%next
rs.MoveNext%>
<%loop
rs.close
conn.close%>
我们可以使用SQL的INSERTINTO命令向数据库中的表添加记录。
向数据库中的表添加记录
我们希望向Northwind数据库中的Customers表添加一条新的记录。
我们首先要创建一个表单,这个表单包含了我们需要从中搜集数据的输入域:
CustomerID: | |
CompanyName: | |
ContactName: | |
Address: | |
City: | |
PostalCode: | |
Country: | |
当用户按下确认按钮时,这个表单就会被送往名为"demo_add.asp"的文件。
文件"demo_add.asp"中含有可向Customers表添加一条新记录的代码:
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
sql="INSERTINTOcustomers(customerID,companyname,"
sql=sql&"contactname,address,city,postalcode,country)"
sql=sql&"VALUES"
sql=sql&"('"&Request.Form("custid")&"',"
sql=sql&"'"&Request.Form("compname")&"',"
sql=sql&"'"&Request.Form("contname")&"',"
sql=sql&"'"&Request.Form("address")&"',"
sql=sql&"'"&Request.Form("city")&"',"
sql=sql&"'"&Request.Form("postcode")&"',"
sql=sql&"'"&Request.Form("country")&"')"
onerrorresumenext
conn.Executesql,recaffected
iferr<>0then
Response.Write("Noupdatepermissions!
")
else
Response.Write("
"&recaffected&"recordadded
")
endif
conn.close
%>
重要事项
在您使用INSERTcommand命令时,请注意以下事项:
∙如果表含有一个主键,请确保向主键字段添加的值是唯一且非空的(否则,provider就不会追加此记录,亦或发生错误)
∙如果表含有一个自动编号的字段,请不要在INSERT命令中涉及此字段(这个字段的值是由provider负责的)
关于无数据字段
在MSAccess数据库中,假如您将AllowZeroLength属性设置为“Yes”,您可以在文本、超链接以及备忘字段输入零长度的字符串("")。
注释:
并非所有的数据库都支持零长度的字符串,因而当添加带有空白字段的记录时可能会产生错误。
因此,检查您使用的数据库所支持的数据类型是很重要的。
我们可使用SQL的UPDATE来更新数据库表中的某条记录。
更新数据库表中的记录
我们希望更新Northwind数据中Customers表的某条记录。
首先我们需要创建一个表格,来列出Customers中的所有记录。
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
setrs=Server.CreateObject("ADODB.Recordset")
rs.open"SELECT*FROMcustomers",conn
%>
ListDatabase
<%
foreachxinrs.Fields
response.write("
"&ucase(x.name)&" | ")next
%>
---|
<%dountilrs.EOF%>
<%
foreachxinrs.Fields
iflcase(x.name)="customerid"then%>
"> | <%else%>
<%Response.Write(x.value)%> | <%endif
next
%>
<%rs.MoveNext%>
<%
loop
conn.close
%>
如果用户点击"customerID"列中的按钮,会打开一个新文件"demo_update.asp"。
此文件包含了创建输入域的源代码,这些输入域基于数据库中记录的字段,同时也含有一个保存修改的“更新按钮”:
UpdateRecord
<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open"c:
/webdata/northwind.mdb"
cid=Request.Form("customerID")
ifRequest.form("companyname")=""then
setrs=Server.CreateObject("ADODB.Recordset")
rs.open"SELECT*FROMcustomersWHEREcustomerID='"&cid&"'",conn
%>
<%foreachxinrs.
展开阅读全文
相关搜索