标题:asp+SQL(不要跟贴)
只看楼主
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
 问题点数:0 回复次数:16 
asp+SQL(不要跟贴)

在管理信息系统的开发应用中,Microsoft公司的ASP(Active Server Pages)被广为使用。ASP实际上是将标准的HTML文件拓展了一些附加特征,为编写人员提供了在服务器端运行脚本的环境,使编写人员可以利用VBScript和JavaScript或其他的第三方脚本语言来创建ASP,实现过去需要编写复杂的CGI程序才能实现的有动态内容的网页,如计数器等。ASP提供了一些内置对象和组件,允许用户从浏览器中接收和发送信息。ASP可以和诸如SQL Server这样的数据库进行连接,进而完成数据的交换与更新。

从本篇开始讲述使用ASP开发WEB数据库系统的一般过程和关于数据库的基本知识。

B/S结构数据库系统 浏览器/服务器(B/S)系统是一种分布式计算系统,它的含义是程序的数据处理并不像通常在基于小型机或基于主机的计算机系统(终端方式)中那样在单个的计算机上发生,而是把程序的不同部分在多台计算机上同时运行。例如,对于SQL Server来讲,将数据存放在服务器计算机上,客户端界面作为程序的另一部分(完成商业逻辑和显示逻辑)存在于客户端桌面计算机上。浏览器/服务器系统的这两个部件通过网络连接相互通信,并且可以扩展到任意规模。 SQL Server是一个真正的客户/服务器关系型数据库系统。它使企业可以设计出能够满足不断改变的信息需求的分布式数据库系统。客户端通过网络向服务器发送SQL语句,服务器返回客户端结果集。

搜索更多相关主题的帖子: SQL 跟贴 Microsoft 计数器 浏览器 
2004-06-08 14:41
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
在2层次结构中,桌面客户机应用程序对在局域网上的数据库服务器发出数据请求。这种结构适用于决策支持应用程序。在决策支持应用程序中,由客户机向数据库服务器发出的单个查询请求可以得到大量的数据用于桌面客户机随后的分析、处理和展示。这种结构也适用于局部化的OLTP程序。两层次结构这个名字也反映了一个事实:只牵扯到两个参与者:应用程序客户机和数据服务器。2层次结构只适用于客户端少于100个,只有1个数据资源,并且基于局域网和较低安全性的系统。
但是,随着网络的发展和事务处理数量的增加,这种结构产生了严重的不利结果。一个典型的商业应用程序(如:电信计费系统)在一个单独的事务处理过程中可能要处理几十个数据请求,每个数据请求只存取几个数据记录,把每个请求传送给服务器会产生大量的网络通信,这将影响系统的性能,和限制共享数据库服务器的性能。另外,随着客户端的增加,会消耗服务器更多的内存,而且,客户端使用这些资源的效率很低(5%左右)。使用2层次结构的花费将以几何级数增加,最终会导致系统崩溃。
在3层次结构中,每一级都支持应用程序的一个独立部分。应用程序客户机完成显示逻辑,仅仅显示数据或接收用户输入的信息,应用程序服务器完成商业处理逻辑(如:费用计算),而数据服务器则完成数据存取逻辑。在一个事务处理过程中,每一个客户机只向应用程序服务器发出一个请求,这就减少了网络通信和竞争。每个应用程序的商业逻辑部分是由该应用程序的所有用户共享的,这样就能更好地控制商业处理,能够极大地简化变化的实现。另外,应用程序服务器和数据库之间是一定数目的常连接(用户不必做连接数据库和断开数据库操作)。而且3层次结构模型的特性是客户机请求应用程序服务而不是数据请求。
随着应用程序和用户的增加,3层次结构更加有效并且容易扩展。

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:41
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
关于ADO
在当今提出的多种管理信息系统解决方案中都强调了与数据库的连接,在电子商务等领域有着广泛的应用。ASP用Database Access组件与数据库进行连接,Database Access组件通过ActiveX Data Objects(ADO)访问存储在数据库或其他表格化数据结构中的信息。
现在,Microsoft对应用程序访问各种各样的数据源所使用的方法是OLEDB,OLEDB介于ODBC层和应用程序之间。在你的ASP页面中,ADO介于ODEDB之上的“应用程序”。你的ADO调用首先被送到OLEDB,接着被送到ODBC层。OLEDB是一套组件对象模型(COM)接口,但它是相当复杂的。这样,你需要一个连接应用程序与OLEDB的桥梁,这就是ADO。而且,它支持开放式数据库连接(ODBC)标准的关系型数据库。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO支持用于建立基于浏览器/服务器(B/S)应用程序的主要功能。
ADO包含了连接对象(Connection)、命令对象(Command)、记录集对象(Recordset)、字段对象(Filed)、参数对象(Parameter)、错误对象(Error)、属性对象(Property)和集合与事件等。
1.  连接(Connection)
用于表示和数据源的连接,以及处理一些命令和事务。通过它可以从应用程序访问数据源,是交换数据所必需的环境。
连接(Connection)的属性有以下几种:

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:42
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
1)CursorLocation属性
它的取值有两个,一个是adUseClient,一个是adUseServer(默认),前者是使用客户端的游标,而后者是使用服务器端的游标。由Connection对象产生的RecordSet对象会自动继承这个属性。
(2)Attributes属性
它是Connection对象的特征,可读写。在Connection对象中,这个属性可以设置两个值:
l adXactCommitRetaining  在调用CommitTrans方法后,自动启动新事务。
l adXactAbortRetaining  在调用RollbackTrans方法后,自动启动新事务。
(3)CommandTimeout属性
Connection对象命令执行所等待的时间,默认30秒,超过时间,将取消操作,可读写。
(4)ConnectionString属性
在使用Connection对象的Open方法打开数据源时,连接参数的字符串,可读写。字符串中包含以下内容:
l    Provider OLEDB  提供者的名字。
l    DataSource  指定数据源的名字。
l    UserID  指定连接数据源时的用户ID。
l    Password  指定连接数据源时用户的密码。
l    FileName  指定要连接的数据库名字。
(5)ConnectionTimeout属性
创建连接时所等待的时间,默认15秒,可读写。
(6)DefaultDatabase属性
当前连接的数据库的缺省名称,可读写。
(7)Mode属性
这个属性指定了打开OLEDB数据处理源时读、写和共享权限。它可以是下列值之一:
l    adModeUnkown  未指定权限。
l    adModeRead  数据源只读打开。
l    adModeWrite  数据源只写打开。
l    adModeReadWrite  数据源被只读写打开。
l    adModeShareDenyRead  数据源以共享模式打开;而且不允许其他用户对数据源进行读打开。
l    adModeShareDenyWrite  数据源以共享模式打开;而且不允许其他用户对数据源进行写打开。
l    adModeShareExclusive  数据源以共享模式打开;而且不允许其他用户对数据源进行读写打开。
l    adModeShareDenyNone  数据源以排它模式打开,即不允许共享。
(8)Version属性
返回ADO的版本号。

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:44
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
连接(Connection)的方法有以下几种:
(1)BeginTrans、CommitTrans、and RollbackTrans方法
BeginTrans方法用于开始一个新事务;CommitTrans方法,在使用这个方法之前,所有事务都在缓冲区,用以提高程序的工作效率,调用这个方法后,数据保存到数据库中;RollbackTrans方法用于取消当前的事务,就是说取消缓冲区中的数据,不把数据修改保存到数据库中。
(2)Open、Close方法
Open方法用来打开一个对象与数据源的连接,而Close方法用来关闭一个对象与数据源的连接。
Open语法为:
dbcon.Open Connectionstring,Username,Password
dbcon为我们创建Connection对象;Connectionstring是连接字符串;Username为用户名;Password为密码。
Close语法为:
dbcon.Close
Close方法关闭后,dbcon对象并不消失,只是释放资源。
(3)Execute方法
这个方法来执行一个查询命令,如:dbcon.Execute SQLstr
SQLstr是我们建立的查询字符串。
下面语句演示Execute方法的使用:
<%@ LANGUAGE = "VBScript" %>
<!-- #Include file="ADOVBS.INC" -->
<HTML><HEAD>
<BODY>
<%
Set OBJConnection = Server.CreateObject ("ADODB.Connection")
OBJConnection.Open "Works"
'建立Connection对象,用Open方法建立与数据源"WORKS"的连接,Works是已经建立好的DSN文件。
SQLQuery = "SELECT * FROM TSGL"
Set RSCustomerList = OBJConnection.Execute (SQLQuery)
'用Execute方法执行上一行的SQL语句,得到记录集RSCustomerRList.
%>
<% Do While Not RSCustomerList.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER>
<FONT SIZE=1>
<%= RSCustomerList ("TSGL_MC") %>
</FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER>
<FONT SIZE=1>
<%= RSCustomerList ("TSGL_CBS") %>
</FONT></TD>
<%
RSCustomerList.MoveNext
'用循环的方法显示记录集RSCustomer中字段TSGL_MC和字段TSGL_CBS的所有内容。
Loop
RSCustomerList.Close
Set RSProductList = Nothing
Set OBJConnection = Nothing
%>
'释放对象。
</BODY>
</HTML>

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:45
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
连接(Connection)的方法有以下几种:
(1)BeginTrans、CommitTrans、and RollbackTrans方法
BeginTrans方法用于开始一个新事务;CommitTrans方法,在使用这个方法之前,所有事务都在缓冲区,用以提高程序的工作效率,调用这个方法后,数据保存到数据库中;RollbackTrans方法用于取消当前的事务,就是说取消缓冲区中的数据,不把数据修改保存到数据库中。
(2)Open、Close方法
Open方法用来打开一个对象与数据源的连接,而Close方法用来关闭一个对象与数据源的连接。
Open语法为:
dbcon.Open Connectionstring,Username,Password
dbcon为我们创建Connection对象;Connectionstring是连接字符串;Username为用户名;Password为密码。
Close语法为:
dbcon.Close
Close方法关闭后,dbcon对象并不消失,只是释放资源。
(3)Execute方法
这个方法来执行一个查询命令,如:dbcon.Execute SQLstr
SQLstr是我们建立的查询字符串。
下面语句演示Execute方法的使用:
<%@ LANGUAGE = "VBScript" %>
<!-- #Include file="ADOVBS.INC" -->
<HTML><HEAD>
<BODY>
<%
Set OBJConnection = Server.CreateObject ("ADODB.Connection")
OBJConnection.Open "Works"
'建立Connection对象,用Open方法建立与数据源"WORKS"的连接,Works是已经建立好的DSN文件。
SQLQuery = "SELECT * FROM TSGL"
Set RSCustomerList = OBJConnection.Execute (SQLQuery)
'用Execute方法执行上一行的SQL语句,得到记录集RSCustomerRList.
%>
<% Do While Not RSCustomerList.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER>
<FONT SIZE=1>
<%= RSCustomerList ("TSGL_MC") %>
</FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER>
<FONT SIZE=1>
<%= RSCustomerList ("TSGL_CBS") %>
</FONT></TD>
<%
RSCustomerList.MoveNext
'用循环的方法显示记录集RSCustomer中字段TSGL_MC和字段TSGL_CBS的所有内容。
Loop
RSCustomerList.Close
Set RSProductList = Nothing
Set OBJConnection = Nothing
%>
'释放对象。
</BODY>
</HTML>

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:45
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
记录集(Recordset)的方法有以下几种:
(1)Open、Close方法
Open方法的用法:rs.Open sqlstr,con,Cursor,lock,Options
其中:rs是我们生成的Recordset对象;sqlstr是查询字符串;con连接字符串,也可以是Connection对象;cursor是游标类型;lock是加锁类型;options是参数类型,可取俩个值: adCmdtext是SQL字符串,adCmdStoredProc是存储过程。
Close方法用法为:rs.close关闭Recordset对象。
(2)AddNew方法
这个方法在数据库中添加一个空记录:rs.addnew
在空记录中加入数据,用以下方法:
rs(字段1)=值1
rs(字段2)=值2
......
rs.update
(3)Delete方法
rs.delete删除当前记录
(4)Move方法
这个方法可以在记录集内漫游,用法为:rs.move nmb,Startrow。
其中:rs是Recordset对象,nmb是指要移动多少行,Startrow是开始的行标签。
(5)Movefirst、Movelast、Movenext、Moveprevious方法
Movefirst把当前记录指针移动到表的开始。
Movelast把当前记录指针移动到表的末尾。
Movenext把当前记录指针向后移动一条记录。
Moveprevious把当前记录指针向前移动一条记录。
(6)Supports方法
这个方法是判断Recordset对象是否支持某个功能,用法为:
Set boolstr=rs.Supports(options)。
其中:boolstr是返回的判断值,如支持某个功能则为“ true”,否则为“false”。rs是Recordset对象,options取值如下:
l Adaddnew检查是否支持Addnew方法。
l AdBookmark检查是否支持书签。
l Addelete检查是否支持delete方法。
l AdMovePrevious检查记录集中指针是否可以向后移动。
l AdResync检查记录集是否可以被最新数据源更新。
l AdUpdate检查是否支持Update方法。
l AdUpdateBatch检查是否支持UpdateBatch方法。
(7)Update、CancelUpdate方法
这两个方法一个是更新数据,一个是取消更新。前者是对所做的修改保存,而后者是从缓冲区中除掉数据,取消更新。
(8)UpdateBatch、CancelBatch方法
这两个方法一个是成批更新数据,一个是取消成批更新。前者是对所做的所有修改做保存,而后者是从缓冲区中除掉所有数据,取消更新。
(9)Requery方法
对最初执行的查询再执行一遍。

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:46
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
3.  命令(Command)
用于执行某些命令来进行诸如查询、修改数据库结构的操作。
Command对象有两个集合:Parameters和Properties。
Command对象有ActiveConnection、CommandText、CommandTimeout、CommandType、Name、Prepared和State共7个属性,以下分别介绍之。
(1)ActiveConnection
请参看Recordset对象的ActiveConnection属性说明。
(2)CommandText
包含想要提交给provider命令的文本。
设置和返回值:设置或返回一个字符串变量,包含provider命令例如SQL语句、数据表名或存储过程调用。默认为“”(零长度字符串)。
(3)CommandTimeout
指示在执行一个命令的时候,在终止尝试并报错之前要等待多长的时间,提供给Command和Connection对象。
设置和返回值:设置或返回一个Long值,指示为一个命令等待多久,单位为秒,默认值为30。
(4)CommandType
指示Command对象的类型。
设置和返回的CommandTypeEnum值:
l AdCmdText  将CommandText看作命令的文本定义。
l AdCmdTable  将CommandText看作数据表名。
l AdCmdStoredProc  将CommandText看作存储过程。
l AdCmdUnknown  默认,CommandText属性的命令类型未知。
(5)Name
指示一个对象的名称,提供给Command、Field、Parameter和Property对象。
设置和返回值:设置或返回一个字符串值。Command和Parameter对象的该属性值可读写,Property和Field对象的该属性值只读。
(6)Prepared
指示在执行之前是否创建一个该命令的编译好的语句。
设置和返回值:设置或返回一个Boolean值。
(7)State
请参看Connection对象中该属性的说明。

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:47
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
Command对象有两个方法:CreateParameter和Execute方法。
(1)CreateParameter方法
该方法用指定的属性创建一个新的Parameter对象。
语法:
Set parameter=command.CreateParameter (Name, Type, Direction, Size, Value)
返回值:返回一个Parameter对象。
参数:
l Name  可选,代表Parameter对象的名字的字符串。
l Type  可选,Long值,确定Parameter对象的数据类型。请参看Type属性。
l Direction  可选,Long值,确定Parameter对象的类型。请参看Direction属性。
l Size  可选,Long值,确定参数值的最大长度,单位为字符或字节。
l Value  可选,Variant值,指示Parameter对象的值。
(2)Execute方法
执行在CommandText属性中定义好的查询、SQL语句或存储过程。
语法:
对一个返回行的命令:
set recordset = command.Execute (RecordsAffected,Parameters,Options)
对一个不返回行的命令:
command.Execute (RecordsAffected, Parameters, Options)
返回值:返回一个Recordset对象指针。
参数:
l RecordsAffected  可选,Long值,provider用它返回该操作影响的记录的数量。
l Parameters  可选,Variant数组,包含被SQL语句传递的参数值。在这个参数中传递,输出参数不会返回正确值。
l Options  可选,Long值,指示provider应该怎样看待Command对象的CommandText属性。
4.  字段(Filed)
用于描述数据集中的列。
5.  参数(Parameter)
用于对传递给数据源的命令赋参数值。
6.  错误(Error)
用于承载所产生错误的详细信息。
首先要清楚一个概念,Error对象是在连接数据库时产生的,而并非那些运行时的实时错误。也就是我们常用On Error Resume Next来忽略的错误。这些错误将在Error对象中用一个统一的模板来集中处理,后面会给出一个实例。下面先来看Error对象的属性和方法:
Count属性:用来统计Errors集合的数目,它的特点与前面讲到的Property对象的Count对象相同。
Clear方法:写法为Error.Clear,是用来清除Errors集合中的原有对象的,在统计新的Error对象时应该先使用此语句。
Item方法:用来指定特定的一个错误,语法为Error.Item(number),其中number为一数字。
由于Item为默认的方法,所以Error(number)的写法与前面的写法是等价的。下面是一段程序,用来列举Error所有对象。
<%
DIM i
Set conn=Server.CreateObject ("ADODB.Connection")
conn.ConnectionString="Driver={Microsoft Access Driver (*.mdb)};DBQ=" _
&Server.Mappath ("/source_asp")&"/property/employee.mdb; "
conn.open
IF conn.errors.count>0 THEN
Response.Write "onnection to datebase cause problem!"&"<br>"
FOR i =0 to conn.errors.count-1
Response.Write conn.errors.item (i)&"<br>"
NEXT
ELSE
Response.Write"connection to datebase successfully!"
END IF
conn.close
% >

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:48
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 

7. 属性(Property) 通过属性,每个ADO对象借此来让用户描述和控制自身的行为。 8. 集合(Set) 集合是一种可方便的包含其他特殊类型对象的对象类型。ADO提供4种类型的集合: l Connection对象具有Errors集合。 l Command对象具有Parameters集合。 l Recordset对象具有Fields集合。 l Connection、Command、Recordset、Field对象都具有Properties集合。 9. 事件(Event) 事件模型是异步操作的基础,这是ADO 2.5引进的新特性。 10.3.3 常用的SQL命令语法 在这一节中,我们要学习关系数据库的查询、操纵和定义语言——SQL语言。为了方便SQL语言的学习,本章中的所有例子都是基于pubs数据库。 SQL(结构化查询语言)是一种在关系数据库中定义和操纵数据的标准语言。SQL语言的最大特点是直观、简单易学,初学者经过较短的学习就可以使用SQL进行数据库的存取操作。 SQL语言通常分成4类:查询语言(SELECT)、操纵语言(INSERT、UPDATE、DELETE)、定义语言(CREATE、ALTER、DROP)和控制语言(COMMIT、ROLLBACK)。 SQL语言中最主要、最核心的部分是它的查询功能。查询语言用来对已经存在于数据库中的数据按照特定的组合、条件表达式或次序进行检索,其基本格式是由SELECT子句、FROM子句和WHERE子句组成的查询块: SELECT<列名表> FROM<表或视图名> WHERE<查询限定条件> 也就是说,SELECT指定了你想要看哪些列数据,FROM指定这些数据来自哪些表或视图,WHERE指定了你想看哪些行。在SQL语言中除了查询以外,许多其他功能也都离不开SELECT语句,如创建视图,实际上是利用查询语句来实现的,又比如插入数据时,有很多时候是从另外一张或多张表中选择符合条件的数据。所以,掌握查询语句是掌握SQL语言的关键。 以下是SQL Server中的SELECT语句的完整用法。 SELECT select_list [INTO new_table_] FROM table_source [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression [ASC | DESC]] 下面简单介绍一下常用的SQL查询语法。 1. 检索表中所有列 格式: SELECT * FROM TABLE_NAME 例如查询所有作者的信息 SELECT* FROM AUTHORS 2. 检索表中特定列 格式: SELECT COLUMN_NAME FROM TABLE_NAME 例如查询所有作者的作者号、姓名信息 SELECT au_id, AU_FNAME, AU_LNAME FROM AUTHORS 在查找多列内容时,用‘,’将各字段分开。 3. 用单引号加入字符串 格式: SELECT COLUMN_NAME 'STRING LITERAL' FROM TABLE_NAME 例如查询所有作者的姓名和编号信息,并且在每个作者的作者号前面显示字符串“身份证号:”表明显示信息是身份证信息 SELECT AU_FNAME, AU_LNAME, '身份证号:', AU_ID FROM AUTHORS 显示结果为: AU_FNAME AU_LNAME AU_ID Abraham Bennet 身份证号:409-56-7008 4. 改变列标题 在缺省情况下,显示的查询结果中的列标题是列名。但你可以改变列标题。总共有两种方法: 方法1 采用“列标题=列名”的格式 SELECT COLUMN_HEADING=COLUMN_NAME FROM TABLE_NAME 方法2 采用“列名列标题”的格式 SELECT COLUMN_NAME COLUMN_HEADING FROM TABLE_NAME 例如显示所有作者的姓名信息和作者编号信息,要求用名和姓来区别firstname和lastname,作者编号用来区分AU_ID SELECT '名'=AU_FNAME, '姓'=AU_LNAME, '作者编号'=AU_ID FROM AUTHORS 结果显示为: 名 姓 作者编号 Abraham Bennet 409-56-7008 S


小猪蹄蹄和大家一起学习ASP
2004-06-08 14:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-2165-1-1.html




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

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