| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1432 人关注过本帖
标题:[求助]谁有数据库连接方面详细的资料
只看楼主 加入收藏
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
 问题点数:0 回复次数:11 
[求助]谁有数据库连接方面详细的资料
谁有数据库连接方面详细的资料,发个给我
liushuei10@163.com
搜索更多相关主题的帖子: 数据库 资料 
2006-12-22 15:05
做人很低调
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1268
专家分:0
注 册:2006-8-2
收藏
得分:0 

你要的是代码么??




其实我很低调,只是你不知道...
2006-12-22 15:22
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
各种数据库连接原理和代码都要

自强不息:)
2006-12-22 15:27
做人很低调
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1268
专家分:0
注 册:2006-8-2
收藏
得分:0 

原理你上网找一下就应该能找到
代码发给你一份

====================conn.asp=================================

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
Option Explicit
'Response.Buffer
Dim conn
Sub ConnectionDatabase
Dim connstr,datapath ',SqlDatabaseName,SqlUserName,SqlPassWord,SqlLocalName

datapath = "data.mdb" 'AC数据库路径

'SqlDatabaseName = "data_db" 'SQL数据库名
'SqlUserName = "sa" 'SQL用户名
'SqlPassWord = "123" 'SQL密码
'SqlLocalName = "Local" 'SQL服务器

connstr = "Provider=MicroSoft.Jet.Oledb.4.0;Data Source="&Server.MapPath(datapath) 'AC OleDB 连接
'connstr = "Driver={Microsoft Access Driver(*.mdb)};DBQ="&Server.MapPath(datapath) 'AC DSN-less连接
'connstr = "Provider=Sqloledb.1;Data Source="&SqlLocalName&"; User ID="&SqlUserName&"; Password="&SqlPassWord&"; Initial Catalog="&SqlDatabaseName&";" 'SQL OleDB 连接
'connstr = "Driver={SQL Server}; Server=("&SqlLocalName&"); User ID="&SqlUserName&"; Password="&SqlPassWord&"; database="&SqlDatabaseName&";"
'SQL 连接
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connstr
If Err.Number<>0 then
Err.Clear
Set conn = Nothing
Response.Write("<b style='font-size:16px'>数据库连接出错,请检查连接字串!")
Response.End()
End If
End Sub

Sub CloseDatabase
If IsObject(conn) then
conn.Close
Set conn = Nothing
End if
End Sub
%>


其实我很低调,只是你不知道...
2006-12-22 15:29
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
不错
但是
connstr = "Provider=MicroSoft.Jet.Oledb.4.0;Data Source="&Server.MapPath(datapath) 'AC OleDB 连接
'connstr = "Driver={Microsoft Access Driver(*.mdb)};DBQ="&Server.MapPath(datapath) 'AC DSN-less连接
'connstr = "Provider=Sqloledb.1;Data Source="&SqlLocalName&"; User ID="&SqlUserName&"; Password="&SqlPassWord&"; Initial Catalog="&SqlDatabaseName&";" 'SQL OleDB 连接
'connstr = "Driver={SQL Server}; Server=("&SqlLocalName&"); User ID="&SqlUserName&"; Password="&SqlPassWord&"; database="&SqlDatabaseName&";"
'SQL 连接

之前要先 set conn=server.createobiect("adodb.connection")吧
就是要这个东西
多谢拉
呵呵
不过我刚刚找到一个详细说明
现在发出来给大家看看希望能帮到大家
• ADO简介
• 如何应用A D O使用数据库

ADO 简介
在当今提出的多种动态网页( DH T M L)解决方案中都强调了与数据库的连接,其实网页接挂
后台数据库也是当前的热门应用,在电子商务等领域有着广泛的应用,就是说,如果你不能掌
握在A S P中使用数据库,那么你就不能编写出功能强大的A S P应用程序。A S P用Database Access
组件与数据库进行连接, Database Access 组件通过ActiveX Data Objects (ADO) 访问存储在数
据库或其他表格化数据结构中的信息。
现在, M i c r o s o f t对应用程序访问各种各样的数据源所使用的方法是O L E D B,OLEDB 介于
O D B C层和应用程序之间。在你的ASP 页面中, A D O介于O D E D B之上的“应用程序”。你的
A D O调用首先被送到O L E D B,接着被送到O D B C层。O L E D B是一套组件对象模型( C O M )接口,
但它是相当复杂的。这样,你需要一个连接应用程序与OLE DB的桥梁,这就是A D O。而且,它
支持开放式数据库连接(ODBC) 标准的关系型数据库。其主要优点是易于使用、高速度、低内
存支出和占用磁盘空间较少。ADO 支持用于建立基于客户端/服务器和Web 的应用程序的主要
功能。
ADO 提供执行以下操作的方式:
5.1.1 连接到数据源
连接可以使应用程序访问数据源,这是交换数据所必须的环境。同时,可确定对数据源的
所有更改是否已成功或没有发生。使用C o n n e c t i o n对象实现这一操作。
C o n n e c t i o n对象代表与数据源进行的唯一会话。如果是客户端/服务器数据库系统,该对象
可以等价于到服务器的实际网络连接。
使用Connection 对象的集合、方法和属性可执行下列操作:
• 在打开连接前使用C o n n e c t i o n S t r i n g、C o n n e c t i o n Timeout 和Mode 属性对连接进行配置。
• 设置CursorLocation 属性以便调用支持批更新的“客户端游标提供者”。
• 使用DefaultDatabase 属性设置连接的默认数据库。
• 使用IsolationLevel 属性为在连接上打开的事务设置隔离级别。
• 使用Provider 属性指定OLE DB 提供者。
• 使用Open 方法建立到数据源的物理连接。使用Close 方法将其断开。
• 使用Execute 方法执行对连接的命令,并使用C o m m a n d Timeout 属性对执行进行配置。
• 可使用B e g i n Tr a n s、C o m m i t Trans 和R o l l b a c k Trans 方法以及Attributes 属性管理打开的连
接上的事务(如果提供者支持的话则可包括嵌套的事务)。
• 使用Errors 集合检查数据源返回的错误。
• 通过Ve r s i o n属性读取使用中的A D O执行版本。
• 使用OpenSchema 方法获取数据库模式信息。

[此贴子已经被作者于2006-12-22 15:53:15编辑过]


自强不息:)
2006-12-22 15:36
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
5.1.2 操作数据源
连接到数据库后,使用Command 对象查询数据库并返回Recordset 对象中的记录,以便执
行大量操作或处理数据库结构。
使用Command 对象的集合、方法和属性进行下列操作:
&#8226; 使用C o m m a n d Text 属性定义命令(例如,SQL 语句)的可执行文本。
&#8226; 通过Parameter 对象和Parameters 集合定义参数化查询或存储过程参数。
&#8226; 可使用Execute 方法执行命令并在适当的时候返回Recordset 对象。
&#8226; 执行前应使用C o m m a n d Type 属性指定命令类型以优化性能。
&#8226; 使用Prepared 属性决定提供者是否在执行前保存准备好(或编译好)的命令版本。
&#8226; 使用C o m m a n d Timeout 属性设置提供者等待命令执行的秒数。
&#8226; 通过设置ActiveConnection 属性使打开的连接与Command 对象关联。
&#8226; 设置Name 属性将Command 标识为与Connection 对象关联的方法。
&#8226; 将Command 对象传送给Recordset 的Source 属性以便获取数据。
5.1.3 得到数据
通过C o m m a n d对象对数据源的操作,返回的记录全集用Recordset 对象表示。Recordset 对
象所指的当前记录均为集合内的单个记录。使用ADO 时,通过Recordset 对象可对几乎所有数
据进行操作。所有R e c o r d s e t对象均使用记录(行)和字段(列)进行构造。打开Recordset 时,
当前记录位于第一个记录(如果有),并且BOF 和EOF 属性被设置为F a l s e。如果没有记录,
B O F和E O F属性设置是Tr u e。可以使用M o v e F i r s t、M o v e L a s t、MoveNext 和MovePrevious 方法
以及M o v e方法和A b s o l u t e P o s i t i o n、A b s o l u t e P a g e和F i l t e r属性来重新确定当前记录的位置。当使
用M o v e方法访问每个记录(或枚举R e c o r d s e t)时,可使用B O F和E O F属性查看是否移动已经超
过了R e c o r d s e t的开始或结尾。
R e c o r d s e t对象可支持两类更新:立即更新和批更新。使用立即更新,一旦调用Update 方法,
对数据的所有更改将被立即写入基本数据源。也可以使用AddNew 和Update 方法将值的数组作
为参数传递,同时更新记录的若干字段。
如果提供者支持批更新,可以使提供者将多个记录的更改存入缓存,然后使用
UpdateBatch 方法在单个调用中将它们传送给数据库。这种情况应用于使用A d d N e w、U p d a t e
和Delete 方法所做的更改。调用UpdateBatch 方法后,可以使用Status 属性检查任何数据冲
突并加以解决。
90使用ASP与SQL Server 网站架设
下载
5.1.4 使用数据
Recordset 对象含有由Field 对象组成的Fields 集合。每个Field 对象代表了Recordset 对象
中的一列。使用Field 对象的Value 属性可设置或返回当前记录的数据。
使用F i e l d对象的集合、方法和属性可进行如下操作:
&#8226; 使用N a m e属性可返回字段名。
&#8226; 使用Va l u e属性可查看或更改字段中的数据。
&#8226; 使用Ty p e、P r e c i s i o n和N u m e r i c S c a l e属性可返回字段的基本特性。
&#8226; 使用DefinedSize 属性可返回已声明的字段大小。
&#8226; 使用ActualSize 属性可返回给定字段中数据的实际大小。
&#8226; 使用Attributes 属性和Properties 集合可决定对于给定字段哪些类型的功能受到支持。
&#8226; 使用AppendChunk 和GetChunk 方法可处理包含长二进制或长字符数据的字段值。
&#8226; 如果提供者支持批更新,可使用O r i g i n a l Value 和U n d e r l y i n g Value 属性在批更新期间解决
字段值之间的差异。
在打开F i e l d对象的R e c o r d s e t前,所有元数据属性( N a m e、Ty p e、D e f i n e d S i z e、Precision 和
N u m e r i c S c a l e)都是可用的。在此时设置这些属性将有助于动态构造其格式。

自强不息:)
2006-12-22 15:43
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
5.1.5 检测错误
A D O对象的操作也会产生一个或多个错误。每个错误出现时,一个或多个Error 对象将被放
到Connection 对象的Errors 集合中。当另一个ADO 操作产生错误时, Errors 集合将被清空,
并在其中放入新的Error 对象集。可以及时地访问这个错误的集合,以便需要的时候进行更正。
E r r o r对象的属性可获得每个错误的详细信息,包括以下内容:
D e s c r i p t i o n属性,包含错误的文本。
N u m b e r属性,包含错误常量的长整型整数值。
S o u r c e属性,标识产生错误的对象。在向数据源发出请求之后,如果Errors 集合中有多个
Error 对象,则将会用到该属性。
S Q L S t a t e和N a t i v e E r r o r属性,提供来自S Q L数据源的信息。
某些属性和方法返回的警告以Errors 集合中的Error 对象的方式出现,但并不中止程序的执
行。在调用Recordset 对象的R e s y n c、U p d a t e B a t c h或C a n c e l B a t c h方法,或C o n n e c t i o n对象的
Open 方法,或者在设置Recordset 对象的Filter 属性之前,可通过调用Errors 集合的Clear 方法。
这样就可以读取E r r o r s集合的C o u n t属性,并得到所返回的错误信息。
A D O通过C o n n e c t i o n对象、C o m m a n d对象、R e c o r d S e t对象来实现上面的操作。A D O的对象
模型如下所示:
C o n n e c t i o n (对象):─E r r o r s (集合)─E r r o r (对象)
C o m m a n d (对象):─P a r a m e t e r s (集合)─P a r a m e t e r (对象)
R e c o r d S e t (对象):─F i e l d s (集合)─F i e l d (对象)
其中C o n n e c t i o n对象、C o m m a n d对象、R e c o r d S e t对象和F i e l d对象又分别具有P r o p e r t i e s集合
第5章使用数据库使用91
下载
而产生P r o p e r t y对象。下面是以上三大对象的相互关系:
C o m m a n d . A c t i v e C o n n e c t i o n - > C o n n e c t i o n
R e c o r d S e t . A c t i v e C o n n e c t i o n - > C o n n e c t i o n
C o n n e c t i o n . E x c u t e - > R e c o r d S e t
C o m m a n d . E x c u t e - > R e c o r d S e t
R e c o r d S e t . S o u r c e - > C o m m a n d
下面分别介绍这三个对象。
5.2 Connection 对象
A S P使用A D O对各种数据源进行各种操作,其中, C o n n e c t i o n对象是必不可少的,我们用
C o n n e c t i o n对象与各种数据源进行连接。
5.2.1 属性
1. CursorLocation属性
它的取值有两个,一个是a d U s e C l i e n t ,一个是a d U s e S e r v e r(默认),前者是使用客户端的游
标,而后者是使用服务器端的游标。二着的差别在于a d U s e C l i e n t游标可以提供供应商所没有提
供的额外的属性,因而灵活性更大。需要注意的是C o n n e c t i o n对象与R e c o r d S e t对象均有此属性,
由C o n n e c t i o n对象产生的R e c o r d S e t对象会自动继承这个属性。另外,要让此属性对C o n n e c t i o n和
R e c o r d S e t对象的实例起作用的话,必须在打开它们之前先作定义。下面看一个例子:
Set conn=Server.CreateObject("ADODB.Connection")
c o n n . C u r s o r L o c a t i o n = a d U s e C l i e n t
strConn ="driver={SQL Server};server=srv;"&_
" u i d = s a ; p w d = ; d a t a b a s e = p u b s "
conn.open strConn
set rs= Server.CreateObject("ADODB.RecordSet")
rs.open "",conn,,,
采用此种方式则c o n n与r s的游标均为a d U s e C l i e n t了。
2. Attributes属性
它是C o n n e c t i o n对象的特征,可读写。在C o n n e c t i o n对象中,这个属性可以设置两个值:
adXactCommitRetaining 在调用C o m m i t Tr a n s方法后,自动启动新事务
adXactAbortRetaining 在调用R o l l b a c k Tr a n s方法后,自动启动新事务
3. CommandTi m e o u t属性
C o n n e c t i o n对象命令执行所等待的时间,默认3 0秒,超过这个时间,将取消操作,可读写。
4. ConnectionString属性
在使用C o n n e c t i o n对象的O p e n方法打开数据源时,连接参数的字符串,可读写。字符串中
包含以下内容:
P r o v i d e r O L E D B提供者的名字
Data Source 指定数据源的名字
92使用ASP与SQL Server 网站架设
下载
User ID 指定连接数据源时的用户I D
P a s s w o r d 指定连接数据源时用户的密码
File Name 指定要连接的数据库名字
5. ConnectionTi m e o u t属性
创建连接时所等待的时间,默认1 5秒,可读写。
6. DefaultDatabase属性
当前连接的数据库的缺省名称,可读写。
7. Mode属性
这个属性指定了打开O L E D B数据处理源时读、写和共享权限。它可以是下列值之一:
a d M o d e U n k o w n 未指定权限。
a d M o d e R e a d 数据源被只读打开。
a d M o d e Wr i t e 数据源被只写打开。
a d M o d e R e a d Wr i t e 数据源被只读写打开。
a d M o d e S h a r e D e n y R e a d 数据源以共享模式打开;而且不允许其他用户对数据源行读打
开。
a d M o d e S h a r e D e n y Wr i t e 数据源以共享模式打开;而且不允许其他用户对数据源行写打
开。
a d M o d e S h a r e E x c l u s i v e 数据源以共享模式打开;而且不允许其他用户对数据源行读写
打开。
a d M o d e S h a r e D e n y N o n e 数据源以排它模式打开,即不允许共享。
8. Ve r s i o n属性
返回A D O的版本号。
5.2.2 方法
1. BeginTrans, CommitTrans, and RollbackTr a n s方法
B e g i n Tr a n s方法用于开始一个新事务; C o m m i t Tr a n s方法,在使用这个方法之前,所有事务
都在缓冲区,用以提高程序的工作效率,调用这个方法后,数据保存到数据库中;
R o l l b a c k Tr a n s方法用于取消当前的事务,就是说取消缓冲区中的数据,不把数据修改保存到数
据库中。
2. Open,C l o s e方法
O p e n方法用来打开一个对象与数据源的连接,而Cl o s e方法用来关闭一个对象与数据源的连
接。
O p e n语法为:
dbcon.Open Connectionstring,Username,Password
d b c o n为我们创建C o n n e c t i o n对象; C o n n e c t i o n s t r i n g是连接字符串; U s e r n a m e为用户名;
P a s s w o r d为密码。
其中C o n n e c t i o n s t r i n g为我们所建立的数据源名,如果我们没有提供这些参数,则A D O就用
第5章使用数据库使用93
下载
下面的参数建立这些参数:
P r o v i d e r O L E D B提供者的名字
Data Source 指定数据源的名字
User ID 指定连接数据源时的用户I D
P a s s w o r d 指定连接数据源时用户的密码
File Name 指定要连接的数据库名字
C l o s e语法为: d b c o n .Cl o s e
C l o s e方法关闭后,d b c o n对象并不消失,只是释放资源。
3. Execute方法
这个方法来执行一个查询命令,如: dbcon.Execute SQLstr SQLstr是我们建立的查询字符串。
下面语句演示E x e c u t e方法的使用:
<%@ LANGUAGE = "VBScript" %>
<!-- #Include file="ADOVBS.INC" -->
< H T M L > < H E A D >
<BODY>
<%
Set OBJConnection = Server.CreateObject("ADODB.Connection")
OBJConnection.Open "Works"
注释:建立C o n n e c t i o n对象,用O p e n方法建立与数据源" W O R K S "的连接,Wo r k s是已经建
立好的D S N文件。
SQLQuery = "SELECT * FROM TSGL"
Set RSCustomerList = OBJConnection.Execute(SQLQuery)
注释:用E x e c u t e方法执行上一行的S Q L语句,得到记录集R S C u s t o m e r R L i s t .
% >
<% Do While Not RSCustomerList.EOF %>
< T R >
<TD BGCOLOR="f7efde" ALIGN=CENTER>
<FONT SIZE=1>
<%= RSCustomerList("TSGL_MC")%>
< / F O N T > < / T D >
<TD BGCOLOR="f7efde" ALIGN=CENTER>
<FONT SIZE=1>
<%= RSCustomerList("TSGL_CBS") %>
< / F O N T > < / T D >
<%
R S C u s t o m e r L i s t . M o v e N e x t
注释:用循环的方法显示记录集R S C u s t o m e r中字程T S G L _ M C和字段T S G L _ C B S的所有内容。
Loop
R S C u s t o m e r L i s t . C l o s e
Set RSProductList = Nothing
Set OBJConnection = Nothing
% >
94使用ASP与SQL Server 网站架设
下载
注释:释放对象。
< / B O D Y >
< / H T M L >
5.3 Error对象
前面讲到了C o n n e c t i o n对象是用于与各类的数据库进行挂接的,但在此过程中将会出现一些
不可预测的错误,因而有了E r r o r这个对象。首先要清楚一个概念, E r r o r对象是在连接数据库时
产生的,而并非那些运行时的实时错误。也就是我们常用On Error Resume Next来忽略的错误。
这些错误将在E r r o r对象中用一个统一的模板来集中处理,后面会给出一个实例。下面先来看
E r r o r对象的属性和方法:
&#8226; C o u n t属性:用来统计E r r o r s集合的数目,它的特点与前面讲到的P r o p e r t y对象的C o u n t对象
相同。
&#8226; C l e a r方法:写法为E r r o r. C l e a r,是用来清除E r r o r s集合中的原有对象的,在统计新的E r r o r
对象时应该先使用此语句。
&#8226; I t e m方法:用来指定特定的一个错误,语法为E r r o r. I t e m ( n u m b e r ),其中n u m b e r为一数字。
由于I t e m为默认的方法,所以E r r o r ( n u m b e r )的写法与前面的写法是等价的。下面是一段程
序,用来列举E r r o r的所有对象。
< %
这个程序用来测试A D O的E r r o r对象
DI M i
Set conn=Server.CreateObject("ADODB.Connection")
conn.ConnectionString="Driver={Microsoft Access Driver (*.mdb)};DBQ=" _
& S e r v e r . M a p p a t h ( " / s o u r c e _ a s p " ) & " / p r o p e r t y / e m p l o y e e . m d b ; "
conn.open
I F conn.errors.count>0 T H E N
Re s p o n s e .Write "connection to datebase cause problem!"&"<br>"
FOR i =0 to conn.errors.count-1
Re s p o n s e .Write conn.errors.item(i)&"<br>"
N E X T
E L S E
Re s p o n s e .Write "connection to datebase successfully!"
END IF
c o n n . c l o s e
% >

自强不息:)
2006-12-22 15:46
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
5.4 Recordset对象
5.4.1 方法
1. Open,c l o s e方法
O p e n方法的用法:rs.Open sqlstr, c o n , C u r s o r, l o c k , O p t i o n s
第5章使用数据库使用95
下载
其中: r s是我们生成的R e c o r d s e t对象; s q l s t r是查询字符串; c o n是连接字符串,也可以是
C o n n e c t i o n对象;c u r s o r是游标类型(后面属性里会讲到);l o c k是加锁类型(后面属性里会讲到);
o p t i o n s是参数类型,可取俩个值: a d C m d t e x t是S Q L查询字符串,adCmdStoredProc 是存储过程。
C l o s e方法用法为:rs.close 关闭R e c o r d s e t对象。
2. AddNew方法
这个方法在数据库中添加一个空记录: r s . a d d n e w
要想向空记录中加入数据,用以下方法:
r s (字段1 ) =值1
r s (字段2 ) =值2
. . . . . .
r s . u p d a t e
r s为建立好的R e c o r d s e t对象。
3. Delete方法
r s . d e l e t e删除当前记录
4. Move方法
这个方法可以在记录集内漫游,用法为: rs.move nmb,Startrow。
其中:r s是R e c o r d s e t对象,n m b是指你要移动多少行, S t a r t r o w是开始的行标签。
5. Movefirst、M o v e l a s t、M o v e n e x t、M o v e p r e v i o u s方法
M o v e f i r s t 把当前记录指针移动到表的开始。
M o v e l a s t 把当前记录指针移动到表的末尾。
M o v e n e x t 把当前记录指针向后移动一条记录。
M o v e p r e v i o u s 把当前记录指针向前移动一条记录。
6. Supports方法
这个方法是判断R e c o r d s e t对象是否支持某个功能,用法为: Set boolstr=rs.Supports(options)。
其中:b o o l s t r是返回的判断值,如支持某个功能则为“ t r u e”,否则为“f a l s e”。r s是R e c o r d s e t
对象,o p t i o n s取值如下:
Adaddnew 检查是否支持A d d n e w方法。
AdBookmark 检查是否支持书签。
Addelete 检查是否支持d e l e t e方法。
AdMovePrevious 检查记录集中指针是否可以向后移动。
AdResync 检查记录集是否可以被最新数据源更新。
AdUpdate 检查是否支持U p d a t e方法。
AdUpdateBatch 检查是否支持U p d a t e B a t c h方法。
7. Update、C a n c e l U p d a t e方法
这俩个方法一个是更新数据,一个是取消更新。前者是对所做的修改保存,而后者是从缓
冲区中除掉数据,取消更新。
8. UpdateBatch、C a n c e l B a t c h方法
这俩个方法一个是成批更新数据,一个是取消成批更新。前者是对所做的所有修改做保存,
96使用ASP与SQL Server 网站架设
下载
而后者是从缓冲区中除掉所有数据,取消更新。
9. Requery方法
对最初执行的查询再执行一遍。
5.4.2 属性
1. Bookmark 属性
我们在记录中有时需要快速定位某个访问过的记录,那么这个属性就是用来标志某个记录
的,我们称它为书签属性。利用该属性我们可以很快地找到某个记录。它的用法是:
Set bookmark1=rs.bookmark
下次我们可以很快找到这个记录,如: rs.move 0,bookmark1
这样我们就把记录指针定位在上次设置书签的记录上。其中: r s是R e c o r d s e t对象。
2. CursorTy p e属性
它返回当前记录集使用的游标类型,也可以由我们给当前记录集设置一个游标类型。在A S P
编程里与在V B中毕竟不太一样。在V B编程中, R e c o r d s e t对象的所有属性和方法在默任状态下
都可以使用,而在A S P编程中则不行。如: R e c o r d s e t对象的Movelast() 方法和R e c o r d C o u n t属性
在默任状态下是不能使用的,只有设置C u r s o r Ty p e属性为a d O p e n F o r w a r d O n l y或a d O p e n D y n a m i c
时才可以使用。这个属性的取值如下:
adOpenForwardOnly 指针只能向前移动,其他人做的修改不可见。
adOpenKeyset 其它人的修改和删除是可见的,但添加的数据是不可见的。
adOpenDynamic 动态类型,其它人的修改是不可见的,但可以向前和向后移动指针。
adOpenStatic 静态类型,其它人的修改是不可见的,但可以向前和向后移动指针。
3. EditMode属性
这个属性返回当前的编辑模式,可取下列值之一:
adEditNone 当前没有编辑操作。
adEditinprogress 当前记录集中的数据以被修改。
adEditadd 当前正在进行添加记录操作。
4. Filter属性
这个属性用来过滤当前记录集中的记录,它的值可以取常量,也可以取字符串值。当它取
字符串值时,相当于S Q L的S e l e c t语句中的W h e r e后面的条件,可以是任何表达式。当它取常量
时是下面的值之一:
adFilterNone 当前的任何过滤都被取消。
adFilterPendingrecords 只返回修改被挂起的记录,即已修改但没有被保存的记录。
adFilterFetchedrecords 只返回最近获取的记录。
5. LockTy p e属性
在A S P 编程中缺省状态下是不能用A d d N e w ( ) 这个方法的,必须把这个属性设置为
a d L o c k O p t i m i s t i c,我们才可以用A d d N e w ( )方法向数据库中添加记录。它的取值如下:
adLockReadOnly 当前记录只读,不能修改。
第5章使用数据库使用97
下载
adLockPessimistic 使用悲观锁。
adLockOptimistic 使用乐观锁。
adLockBatchOptimistic 对成批更新使用乐观锁。
6. Status属性
这个属性是用来检测当前的记录状态的,这个属性是只读的。它的取值如下:
adRecOk 记录修改成功。
adRecNew 表示这是一个新记录。
adRecModified 记录被修改。
adRecDeleted 记录被删除。
adRecUnModified 记录未被修改。
adRecPendingChanges 因为有挂起的插入操作,记录未被称为保存。
adRecCantRelease 因为加锁,所以记录不能更新换代。
adRecPermissionDenied 由于用户权限不允许修改记录。
adRecSchemaviolation 因结构不符,不能更新记录。
5.5 Command对象
一个C o m m a n d对象代表了对数据源的操作命令的定义,利用它可以简化操作并提高效率。
我们可以用一个C o m m a n d对象查询数据库并将结果返回给一个R e c o r d s e t对象,执行一批命
令或者是对数据库的结构进行操作。
应用C o m m a n d对象的集合、方法和属性,我们可以做以下的事情:
用C o m m a n d Te x t属性定义执行命令的文本(例如,一个S Q L语句)。
用P a r a m e t e r对象和P a r a m e t e r s集合定义带参数的查询或存储过程。
用E x e c u t e方法执行一个命令并返回一个R e c o r d s e t对象。
用C o m m a n d Ty p e属性在执行命令之前确定命令的类型以优化性能。
用P r e p a r e d属性在执行命令之前确定命令是否已有编译好的版本。
用C o m m a n d Ti m e o u t属性设置执行一个命令时p r o v i d e r等待的时间的秒数。
用A c t i v e C o n n e c t i o n的设置将一个C o m m a n d对象和一个打开的连接关联起来。
用N a m e属性将C o m m a n d对象设置为相关C o n n e c t i o n对象的一个方法。
如果要在没有预先定义一个C o n n e c t i o n对象的情况下独立地创建一个C o m m a n d对象,可以
将它的A c t i v e C o n n e c t i o n属性设为一个有效的连接字符串。A D O仍然创建了一个C o n n e c t i o n对象,
但没有赋予它一个对象变量。但是,如果要将多个C o m m a n d对象和一个对象连接关联起来,你
必须显式地创建并打开一个C o n n e c t i o n对象,这会赋予该C o n n e c t i o n对象一个对象变量。如果没
有将C o m m a n d对象的A c t i v e C o n n e c t i o n属性设为此对象变量, A D O将会为每一个C o m m a n d对象
创建一个新的C o n n e c t i o n对象,即使它们使用了同样的连接字符串。
要执行一个定义好的命令,只需要在相关的C o n n e c t i o n对象中调用该命令的N a m e属性就可
以了。该命令的A c t i v e C o n n e c t i o n属性必须设为该C o n n e c t i o n对象。如果命令有参数,用该方法
的参变量将值传递给它。
98使用ASP与SQL Server 网站架设
下载
C o m m a n d是可以用来做参数传递的。C o m m a n d对象的批量参数传递,存储过程的执行等灵
活而强大的功能也是它受到青睐的原因。C o m m a n d对象主要是向S Q L语句、存储过程传递参数,
依靠S Q L的强大功能来完成数据库的操作;而R e c o r d S e t对象可以说是微软重新封装了数据对象,
并提供了一系列的方法和属性来简化数据库的编程。我们看下面的一个例子,它用了两种不同
的方法实现了向数据库中增加一新的记录条。从中可以清楚地看到C o m m a n d对象与R e c o r d S e t对
象的不同点。
方法1(C o m m a n d):
Const adCmdText=&H0001
Const adInteger=3
Const adVarChar=200
Const adParamInput = &H0001
Set conn=Server.CreateObject("ADODB.Connection")
Set comm=Server.Createobject("ADODB.Command")
conn.open "Driver={ Microsoft Access Driver};DBQ="& _
S e r v e r . M a p p a t h ( " / s o u r c e _ a s p " ) & " / p r o p e r t y / e m p l o y e e . m d b ; "
Co m m . A c t i v e C o n n e c t i o n = c o n n
Co m m . C o m m a n d T y p e = a d C m d T e x t
Comm.CommandText="insert into employee (Job_ID,Fri_Name,Last_name)"& _
& " v a l u e s ( ? , ? , ? ) "
Set param=comm.CreateParameter("ID",adInteger,adParamInput,3,4)
Comm.Parameters.Append param
Set param=comm.CreateParameter("FN",adVarChar,adParamInput,255,"bill")
Comm.Parameters.Append param
Set param=comm.CreateParameter("LN",adVarChar,adParamInput,255,"Gates")
Comm.Parameters.Append param
Co m m . E x e c u t e
c o n n . c l o s e
方法2(R e c o r d S e t):
Const adCmdTable=&H0002
Set conn=Server.CreateObject("ADODB.Connection")
Set rs=Server.Createobject("ADODB.RecordSet")
conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ="& _
S e r v e r . M a p p a t h ( " / s o u r c e _ a s p " ) & " / p r o p e r t y / e m p l o y e e . m d b ; "
r s . A c t i v e C o n n e c t i o n = c o n n
rs.open "employee",,,adCmdTable
r s . a d d n e w
r s ( " J o b _ I D " ) = 4
r s ( " F r i _ N a m e " ) = " b i l l "
r s ( " L a s t _ N a m e " ) = " G a t e s "
r s . u p d a t e
r s . c l o s e
c o n n . c l o s e
从上面的例子就可以看出,这两个对象在处理一些问题上所用的方法不同的。R e c o r d S e t对
象似乎更加好理解一些,但在性能上来讲C o m m a n d的性能相对要优越些,但如果你是批量地加入
第5章使用数据库使用99
下载
记录,你就能体会到第一种方案的好处了。下面详细介绍C o m m a n d对象的属性、方法和集合。
5.5.1 集合
C o m m a n d对象有两个集合:P a r a m e t e r s和P r o p e r t i e s。
5.5.2 方法
C o m m a n d对象有两个方法:C r e a t e P a r a m e t e r和E x e c u t e方法。
1. CreateParameter方法
该方法用指定的属性创建一个新的P a r a m e t e r对象。
语法:
Set parameter
=command.CreateParameter (Name,Type,Direction,Size,Value)
返回值:返回一个P a r a m e t e r对象。
参数:
N a m e可选。一个代表P a r a m e t e r对象的名字的字符串。
Ty p e可选。一个L o n g值,确定P a r a m e t e r对象的数据类型。请参看Ty p e属性。
D i r e c t i o n可选。一个L o n g值,确定P a r a m e t e r对象的类型。请参看D i r e c t i o n属性。
S i z e可选。一个L o n g值,确定参数值的最大长度,单位为字符或字节。
Va l u e , v a r Va l u e可选。一个Va r i a n t值,指示P a r a m e t e r对象的值。
备注:
&#8226; 我们用C r e a t e P a r a m e t e r方法创建一个新的带有指定的名称、类型、方向、大小和值的
P a r a m e t e r对象。你传递的参量都被写到相应的P a r a m e t e r属性中。该方法并不自动将该
P a r a m e t e r对象附加到C o m m a n d对象的P a r a m e t e r s集合中去。它只是设置附加的属性,在将
该P a r a m e t e r对象附加到集合中去时A D O会验证它。
&#8226; 如果在Ty p e参数中指定了一个可变长的数据类型,在将该P a r a m e t e r对象附加到P a r a m e t e r s
集合之前,必须传递一个S i z e参数或设置该对象的S i z e属性,不然就会产生一个错误。
2. Execute方法
执行在C o m m a n d Te x t属性中定义好的查询、S Q L语句或存储过程。
语法:
对一个返回行的命令:
set recordset = command.Execute(RecordsAffected,Parameters,Options)
对一个不返回行的命令:
command.Execute RecordsAffected.Parameters,Options
返回值:返回一个R e c o r d s e t对象指针。
参数:
R e c o r d s A ff e c t e d可选。一个L o n g变量,p r o v i d e r用它返回该操作影响的记录的数量。
P a r a m e t e r s可选。一个Va r i a n t数组,包含被S Q L语句传递的参数值。(在这个参数中传递,
100使用ASP与SQL Server 网站架设
下载
输出参数不会返回正确值。)
O p t i o n s可选。一个L o n g值,指示p r o v i d e r应该怎样看待C o m m a n d对象的C o m m a n d Te x t属性。
这些属性有:
A d C m d Te x t表明p r o v i d e r应该将C o m m a n d Te x t看作一个命令的文本定义,例如一个S Q L语
句。
A d C m d Ta b l e表明p r o v i d e r应该将C o m m a n d Te x t看作一个表名。
A d C m d S t o r e d P r o c表明p r o v i d e r应该将C o m m a n d Te x t看作一个存储过程。
A d C m d U n k n o w n表明C o m m a n d Te x t中的命令是未知的。
请参考C o m m a n d Ty p e属性的说明以了解以上4个常数的详细解释。
备注:
&#8226; 我们用C o m m a n d对象的E x e c u t e方法来执行在C o m m a n d Te x t属性中定义的查询。如果
C o m m a n d Te x t属性指定了一个返回行的查询,这个查询的结果保存在一个新的R e c o r d s e t对
象中。有的编程语言当你不想得到Re c o r d s e t时允许忽略此返回值。如果该查询有参数,该
C o m m a n d对象的参数一直保持直到调用E x e c u t e方法时传来新的值。在调用E x e c u t e方法的
时候,可以通过省略一些参数的新值的方法只覆盖参数集的一部分。定义参数和该方法传
递参数的顺序应该一致。例如,如果有4个(或更多)的参数,你只想给第一个和第四个
参数传递新值,应该以( v a r l , , , v a r 4)的形式传递数组作为P a r a m e t e r s集合的参数。
&#8226; 当被放在P a r a m e t e r s集合中传递时,输出参数不会返回正确值。
5.5.3 属性
C o m m a n d对象有A c t i v e C o n n e c t i o n、C o m m a n d Te x t、C o m m a n d Ti m e o u t、C o m m a n d Ty p e、
N a m e、P r e p a r e d和S t a t e共7个属性,以下分别介绍之。
1. ActiveConnection
请参看R e c o r d s e t对象的A c t i v e C o n n e c t i o n属性说明。
2. CommandTe x t
包含想要提交给p r o v i d e r命令的文本。
设置和返回值:设置或返回一个字符串变量,包含p r o v i d e r命令例如S Q L语句、数据表名或
存储过程调用。默认为“”(零长度字符串)。
备注:
&#8226; 我们用C o m m a n d Te x t属性设置或返回一个C o m m a n d对象的方便。通常是一个S Q L语句,但
也可以是其它能被p r o v i d e r识别的语句,例如存储过程调用。该S Q L语句一定要能被
p r o v i d e r的查询处理器正确识别处理。
&#8226; 在设定C o m m a n d Te x t属性的时候如果C o m m a n d对象的p r e p a r e d属性为Tr u e并且该C o m m a n d
对象被绑定到一个打开的连接,当调用E x e c u t e或O p e n方法时A D O会准备好该查询(也就
是说,一个该查询的存储好的已编译形态)。
&#8226; 根据C o m m a n d Te x t属性的设置,A D O也许会更改C o m m a n d Te x t属性。你能在任何时候读取
C o m m a n d Te x t属性以便查看在执行时A D O会使用的准确的命令内容。

自强不息:)
2006-12-22 15:47
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
3. CommandTi m e o u t
指示在执行一个命令的时候,在终止尝试并报错之前要等待多长的时间。
提供给C o m m a n d和C o n n e c t i o n对象
设置和返回值:设置或返回一个L o n g值,指示为一个命令等待多久,单位为秒,默认值为
3 0。
备注:
&#8226; 我们用C o n n e c t i o n对象或C o m m a n d对象的C o m m a n d Ti m e o u t属性来允许一个E x e c u t e方法调
用作废,原因可能是网络传输问题或服务器忙。如果在C o m m a n d Ti m e o u t属性允许的时间
间隔过去之后命令还没有执行完, A D O将会报错并终止该命令的执行。如果将该属性设为
0,A D O将一直等待下去直到命令执行完成。要使用该属性,请确认使用的p r o v i d e r和数据
源支持C o m m a n d Ti m e o u t功能。
&#8226; C o n n e c t i o n 对象的C o m m a n d Ti m e o u t 属性设置对同一连接中的C o m m a n d 对象的
C o m m a n d Ti m e o u t设置没有影响;也就是说, C o m m a n d对象的C o m m a n d Ti m e o u t属性不继
承C o n n e c t i o n对象的C o m m a n d Ti m e o u t属性的值。
&#8226; 在一个C o n n e c t i o n对象上,C o m m a n d Ti m e o u t属性在打开连接之后保持可读写。
4. CommandTy p e
指示C o m m a n d对象的类型。
设置和返回值:设置或返回如表5 - 1所列的C o m m a n d Ty p e E n u m值:
表5-1 设置或返回的Command Type Enum
常量描述
A d C m d Te x t 将C o m m a n d Te x t看作命令的文本定义
A d C m d Ta b l e 将C o m m a n d Te x t看作数据表名
A d C m d S t o r e d P r o c 将C o m m a n d Te x t看作存储过程
A d C m d U n k n o w n 默认。C o m m a n d Te x t属性的命令类型未知
备注:
&#8226; 我们用C o m m a n d Ty p e属性来优化对C o m m a n d Te x t属性的预处理。
&#8226; 如果C o m m a n d Ty p e属性值为a d C m d U n k n o w n(默认值),执行效率可能会降低,因为A D O
必须询问p r o v i d e r以确定C o m m a n d Te x t属性是S Q L语句、存储过程还是数据表。如果你知
道使用的命令的类型,设置正确的C o m m a n d Ty p e属性直接引导A D O到相关的代码进行处
理。如果C o m m a n d Ty p e属性不符合C o m m a n d Te x t属性中的命令的类型,当调用E x e c u t e方
法时就会产生一个错误。
5. Name
指示一个对象的名称。
提供给C o m m a n d、F i e l d、P a r a m e t e r和P r o p e r t y对象
设置和返回值:设置或返回一个字符串值。C o m m a n d和P a r a m e t e r对象的该属性值可读写,
P r o p e r t y和F i e l d对象的该属性值只读。
102使用ASP与SQL Server 网站架设
下载
备注:
&#8226; 我们用N a m e属性来赋予或取得一个C o m m a n d、F i e l d、P a r a m e t e r或P r o p e r t y对象的名称。
&#8226; 对还没有附加到P a r a m e t e r s集合的P a r a m e t e r对象, N a m e属性可读写。对已附加的
P a r a m e t e r对象和其它对象,N a m e属性只读。一个集合中的名称不一定唯一。
&#8226; 你能够通过顺序访问取得N a m e属性,之后就可以直接用名称访问该对象。
6. Prepared
指示在执行这前是否创建一个该命令的编译好的语句。
设置和返回值:设置或返回一个B o o l e a n值。
备注:
&#8226; 我们用P r e p a r e d属性在一个C o m m a n d对象第一次执行之前使p r o v i d e r根据C o m m a n d Te x t属
性储存一个该查询的已准备(已编译)版本。这有可能延迟一个命令的一次执行,但一旦
p r o v i d e r编译了一个命令,它就会在以后执行该命令时都使用这个已编译好的版本,这将
会大大提高性能。
&#8226; 如果该属性为F a l s e , p r o v i d e r,则将会在不创建已编译版本的情况下直接执行该命令。
&#8226; 如果p r o v i d e r不支持该命令的执行,它会忽略任何要求编译该命令的请求并将P r e p a r e d属性
设为F a l s e。
7. State
请参看C o n n e c t i o n对象中该属性的说明。
5.5.4 存储过程
在讨论S t o r e d P r o c e d u r e(存储过程)对象之前,我还要对C o m m a n d对象的E x e c u t e方法的作
用进行一下阐述,一般来说使用C o m m a n d的E x e c u t e方法有3个目的。
&#8226; 用于进行一些简单的处理,例如删除一条记录:
Co m m . C o m m a n d T y p e = A d C m d T e x t
Comm.CommandText="Delect From employee Where Job_ID=1"
Co m m . e x e c u t e
这样的工作不需要返回什么东西。
&#8226; 用于进行一些复杂的处理,这类一般都是和S t o r e d P r o c e d u r e一同工作的,而且有输出和输
入参数,这也是我们本节的讨论主题。
&#8226; 用于返回一个R e c o r d S e t对象,用于其它的处理,例如:
Co m m . C o m m a n d T y p e = A d C m d T e x t
Comm.CommandText="Delect From employee Where Job_ID=1"
Set rs=comm.execute
D I M I
W H I L E not rs.EOF
F O R I=0 to rs.fileds.count-1
Re s p o n s e .Write rs.fileds.item(I).value&","
N E X T
Re s p o n s e .Write "<br>"
第5章使用数据库使用103
下载
r s . M o v e N e x t
W E N D
那么S t o r e d P r o c e d u r e是什么呢?它是一个预先存储的数据库执行动作集,在S Q L的管理结构
中,对于一个数据库有2部分:一个是数据表的集合,一个是S t o r e d P r o c e d u r e的集合。将两者结
合可以完成很多强大的功能。S t o r e d P r o c e d u r e其实是对传统的S Q L语句的一种扩展,主要是在参
数的输入与输出上。下面我大致介绍一下S t o r e d P r o c e d u r e的语法结构和与C o m m a n d对象的参数
的传递问题。
S t o r e d P r o c e d u r e的标准写法:
Create Procedure Procedure_Name
Define Parameter
A s
SQL Structure
上面的语法结构中, P r o c e d u r e _ N a m e为存储结构的的名字,也是你将在C o m m a n d中引用的
名字。然后是定义输出和输入的参数。最后是一个S Q L结构化语句。下面是一个S t o r e d P r o c e d u r e
的例子,它无需输入参数,也没有输出。
Create Procedure Del_User
A s
Delect From Employee Where Job_ID=1
如果我们要删除指定的J o b _ I D,则我们需要给这个S t o r e d P r o c e d u r e输入参数。
Create Procedure Del_User1
@intID int
A s
Delect From Employee Where Job_Id = @intID
这里的@ i n t J o b就是一个输入参数,它可以从外部接受输入的值,下面是给它输入的a s p程
序:
Set conn=Server.CreateObject("ADODB.Connection")
Set comm=Server.CreateObject("ADODB.Command")
conn.ConnectionString="Driver={SQL Server};Server=ser;"&_
" u i d = s a ; p s s s = ; d a t a b a s e = e m p l o y e e "
c o n n . o p e n
Co m m . A c t i v e C o n n e c t i o n = c o n n
Co m m . C o m m a n d T y p e = a d C m d S t o r e d P r o c
Comm.CommandType="Del_User1" ' 这里的名字就是前面定义过的S t o r e d P r o c e d u r e的名字。
'下面就是参数的输入
p a r a m = c o m m . C r e a t e P a r a m e t e r ( " I D " , a d I n t , a d P a r a m I n p u t , 4 )
'这里的a d P a r a m I n p u t定义是最重要的。
Param.Value=1 ' 这里的值可以输入你想要的值,也可以用R e q u e s t来获得
Comm.Parameters.Append param
Comm.Execute
这样我们就可以向S t o r e d P r o c e d u r e传递参数了。
有时在一个S t o r e d P r o c e d u r e中,还存在有输出的参数,下面是一个例子它返回一个J o b _ I D确
104使用ASP与SQL Server 网站架设
下载
定的F r i _ N a m e的值
Create Procedure Get_fName
@intID int
@fName varChar Output '说明为输出的参数
A s
Select @fName = Fri_Name Where Job_ID = @intID
它相应的a s p程序也要改写为下面的形式
Set conn=Server.CreateObject("ADODB.Connection")
Set comm=Server.CreateObject("ADODB.Command")
conn.ConnectionString="Driver={SQL Server};Server=ser;"&_
" u i d = s a ; p s s s = ; d a t a b a s e = e m p l o y e e "
c o n n . o p e n
Co m m . A c t i v e C o n n e c t i o n = c o n n
Co m m . C o m m a n d T y p e = a d C m d S t o r e d P r o c
Co m m . C o m m a n d T y p e = " G e t _ f N a m e "
'这里的名字就是前面定义过的S t o r e d P r o c e d u r e的名字。
'下面就是参数的输入
p a r a m = c o m m . C r e a t e P a r a m e t e r ( " I D " , a d I n t , a d P a r a m I n p u t , 4 )
'这里的a d P a r a m I n p u t定义是最重要的。
Param.Value=2 ' 这里的值可以输入你想要的值,也可以用R e q u e s t来获得
Comm.Parameters.Append param
p a r a m = c o m m . C r e a t e P a r a m e t e r ( " f N a m e " , a d V a r c h a r , a d P a r a m O u t p u t , 2 5 5 , " " )
'这里的a d P a r a m O u t p u t定义是最重要的。说明它是一个输出的参数,默认的值为一空的字符串
Comm.Parameters.Append param
Comm.Execute
Response.Write "Job_Id 为" & p a r a m ( 0 ) & "的员工的姓为" & p a r a m ( 1 )
我给大家简单介绍了一下S t o r e d P r o c e d u r e的基本概念,但S t o r e d P r o c e d u r e比较复杂,如果你
想进一步的深入,可以参看SQL Server的手册。
5.6 ASP与数据库连接
在We b服务器上运行的应用程序需要进行大量的服务器端数据库操作,而A S P通过内嵌
Database Access组件实现对任何支持A D O的数据源进行操作,包括MS SQL Server、A c c e s s、
O r a c l e等。
要使用A D O,必须用服务器端的包含(SSI) 语句在.asp 文件中包含进ADO 常量的包含文件。
在服务器端配置好A S P后, A D O的常量被放置在“ \PROGRAM FILES\COMMON FILES
\ S Y S T E M \ A D O”下。
如果用VBScript 作为主脚本语言的,则包含文件为A D O V B S . I N C。如果用J S c r i p t,则包
含文件为A D O J AV S . I N C。
可采用下列语句将包含文件包含进.asp 文件中:
<!--#include virtual="/PROGRAM FILES/COMMON FILES/SYSTEM/ADO/ADOVBS.INC"-->

< ! - - # i n c l u d e v i r t u a l = " / P R O G R A M F I L E S / C O M M O N F I L E S / S Y S T E M / A D O / A D O J A V A S . I N - >
第5章使用数据库使用105
下载
5.6.1 使用O D B C与数据库连接
要与O D B C兼容的数据库进行连接,必须建立一个Data Source Name (DSN) 用以定位和标识
特定的ODBC 兼容数据库
通过O D B C,您可以选择希望创建的DSN 的类型:用户、系统或文件。用户和系统D S N
存储在Windows NT 注册表中。系统DSN 允许所有的用户登录到特定的服务器上去访问数据库,
而用户DSN 使用适当的安全身份证明限制数据库到特定用户的连接。文件DSN 用于从文本文
件中获取表格,提供了对多用户的访问,并且通过复制DSN 文件,可以轻易地从一个服务器转
移到另一个服务器。
通过在Windows 的“开始”菜单打开“控制面板”,您可以创建基于DSN 的文件。双
击“ODBC Data Sources ”图标,然后选择“文件D S N”属性页,单击“添加”,选择数据
库驱动程序,然后单击“下一步”。按照后面的指示配置适用于您的数据库软件的D S N。(见
图5 - 1)
图5-1 ODBC数据管理器
1) 配置Microsoft Access 数据库的文件D S N
在“创建新数据源”对话框中,从列表框选择“ Microsoft Access Driver”,然后单击“下一
步”(见图5 - 2)。
键入您的DSN 文件名,本处输入A c c e s s D a t a b a s e,然后单击“下一步”。
单击“完成”创建数据源(见图5 - 3)。
在“ODBC Microsoft Access 97 安装程序”对话框中,单击“选择”。选择Microsoft Access
数据库文件( * . m d b ),然后单击“确定”(见图5 - 4)。
本处选择的数据库文件包含一个表,名字叫“表1”,包含两个字段“N a m e”和“A g e”。
106使用ASP与SQL Server 网站架设
下载
图5-2 选择O D B C数据源
图5-3 输入D S N文件名
2) 建立连接并输出所有记录的代码如下:
<%@ LANGUAGE = "VBScript" %>
<%
Set objConnection = Server.CreateObject("ADODB.Connection")
objConnection.Open "Filedsn=AccessDatabase.dsn"
第5章使用数据库使用107
下载
SQLQuery = "SELECT * FROM 表1"
Set rsCustomersList = objConnection.Execute(SQLQuery)
% >
<%Do Until rsCustomersList.EOF%>
< t r >
<td bgcolor="f7efde" align=center>
<%= rsCustomersList("Name")%>
<%= rsCustomersList("Age") %>
< b r >
< / t d >
</tr>
<%
rsCustomersList.MoveNext
Loop
% >
< % o b j C o n n e c t i o n . c l o s e % >
以上代码建立了一个C o n n e c t i o n对象,用C o n n e c t i o n对象的O p e n方法打开在O D B C中文件
D S N设置好的A c c e s s数据库,用C o n n e c t i o n对象的E x e c u t e方法查询数据库中表1的记录,用循环
输出所有记录的内容。
图5-4 选择要连接的数据库
在记事本中输入以上代码,保存为L i s t . a s p,用H T T P的方式打开浏览。
3) 配置SQL Server 数据库文件D S N
108使用ASP与SQL Server 网站架设
下载
如果数据库驻留在远程服务器上,请与服务器管理员联系,获取附加的配置信息;下面的
过程使用SQL Server 的ODBC 默认的设置,它可能不适用于您的配置。
在“创建新数据源”对话框中,从列表框中选择“ SQL Server”,然后单击“下一步”。
键入DSN 文件的名称,然后单击“下一步”。
单击“完成”创建数据源。
键入运行SQL 服务程序的服务器的名称、登录ID 和密码(见图5 - 5)。
在“创建SQL Server 的新数据源”对话框中,在“服务器”列表框中键入包含SQL Server
数据库的服务器的名称,然后单击“下一步”(见图5 - 6)。
选择验证登录ID 的方式(见图5 - 7)。
如果要选择SQL 服务器验证,请输入一个登录ID 和密码,然后单击“下一步”。
在“创建SQL Server 的新数据源”对话框中,设置默认数据库、存储过程设置的驱动程序
和ANSI 标识,然后单击“下一步”(见图5 - 8)。
在对话框(同样名为“创建SQL Server 的新数据源”)中,选择一种字符转换方法,然后单
击“下一步”。
在下一个对话框(同样名为“创建SQL Server 的新数据源”)中,选择登录设置。
在“ODBC Microsoft SQL Server 安装程序”对话框中,单击“测试数据源”。如果DSN 正
确创建,“测试结果”对话框将指出测试成功完成(见图5 - 9)。
图5-5 输入D S N文件名
4) 建立连接并输出所有记录的代码如下:
<%@ LANGUAGE ="VBScript"%>
<%
第5章使用数据库使用109
下载
Set objConnection = Server.CreateObject("ADODB.Connection")
o b j C o n n e c t i o n . O p e n " F i l e d s n = S q l S e r v e r . d s n "
SQLQuery = "SELECT * FROM Tsgl"
Set rsCustomersList = objConnection.Execute(SQLQuery)
% >
<%Do Until rsCustomersList.EOF%>
< t r >
<td bgcolor="f7efde" align=center>
<%= rsCustomersList("Tsgl_MC")%>
<%= rsCustomersList("Tsgl_CBS") %>
< b r >
< / t d >
</tr>
<%
rsCustomersList.MoveNext
Loop
% >
< % o b j C o n n e c t i o n . c l o s e % >
本例中,表Ts g l包含Ts g l _ M C和Ts g l _ C B S两个字段,在记事本中输入以上代码,保存为
L i s t . a s p,用H T T P的方式打开浏览。
图5-6 选择SQL Server数据源
110使用ASP与SQL Server 网站架设
下载
图5-7 选择SQL Server的登陆方式
图5-8 选择数据库
第5章使用数据库使用111
下载
图5-9 检测SQL Server数据源
5.6.2 不使用O D B C与数据库连接
通过建立C o n n e c t i o n对象及R e c o r d e s t对象,A S P可以方便地与任何与OLD DB兼容的数据库
进行连接并进行查询、修改、更新等操作。
1) 与A C C E S S数据库进行连接,代码如下:
<%@ LANGUAGE = "VBScript" %>
<!--#include file="ADOVBS.INC"-->
<%
Set objConnection = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("db1.mdb")
objConnection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
SQLQuery = "SELECT * FROM 表1"
Set rsRecordset = Server.CreateObject("ADODB.Recordset")
rsRecordset.Open SQLQuery,objConnection, adOpenKeyset, adLockReadOnly
% >
<%Do Until rsRecordset.EOF%>
< t r >
<td bgcolor="f7efde" align=center>
<%= rsRecordset("Name")%>
<br>
<%= rsRecordset("Age") %>
< b r >
< / t d >
112使用ASP与SQL Server 网站架设
下载
</tr>
<%
rsRecordset.MoveNext
Loop
% >
< % o b j C o n n e c t i o n . c l o s e % >
在记事本中输入以上代码,保存为l i s t . a s p,用H T T P的方式打开并浏览。
2) 与SQL SERV E R数据库进行连接,代码如下:
<%@ LANGUAGE = "VBScript" %>
<!--#include file="ADOVBS.INC"-->
<%
Set objConnection = Server.CreateObject("ADODB.Connection")
objConnection.Open "driver={SQL Server};server=jcserver;uid=sa;database=MIS;"
SQLQuery = "SELECT * FROM TSGL"
Set rsRecordset = Server.CreateObject("ADODB.Recordset")
rsRecordset.Open SQLQuery,objConnection, adOpenKeyset, adLockReadOnly
% >
<%Do Until rsRecordset.EOF%>
< t r >
<td bgcolor="f7efde" align=center>
<%= rsRecordset("Tsgl_MC")%>
<br>
<%= rsRecordset("Tsgl_CBS") %>
< b r >
< / t d >
</tr>
<%
rsRecordset.MoveNext
Loop
% >
< % o b j C o n n e c t i o n . c l o s e % >



完了
我是看晕拉太长了

自强不息:)
2006-12-22 15:48
做人很低调
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1268
专家分:0
注 册:2006-8-2
收藏
得分:0 
麻烦你把上述资料的网址发一下  我去看看....

其实我很低调,只是你不知道...
2006-12-22 15:52
快速回复:[求助]谁有数据库连接方面详细的资料
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017296 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved