<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[静怡家园]]></title> 
<link>http://www.zhanghaijun.com/index.php</link> 
<description><![CDATA[书山有路勤为径，学海无涯苦作舟！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[静怡家园]]></copyright>
<item>
<link>http://www.zhanghaijun.com/post//</link>
<title><![CDATA[用ASP调用SQL 视图和存储过程]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Sat, 16 Dec 2006 13:47:35 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post//</guid> 
<description>
<![CDATA[ 
	一、前言 <br/><br/>ASP (Active Server Pages) 是服务器端的脚本编写环境，它由微软公司的IIS3.0以上版本支持。它可用来创建动态 Web 页或生成功能强大的 Web应用程序。ASP页是包括 HTML 标记、文本和脚本命令的文件。ASP页可调用ActiveX组件来执行任务，例如连接到数据库或进行商务计算。通过ASP，可为您的Web页添加交互内容或用HTML页构成整个Web应用程序，这些应用程序使用HTML页作为您的客户的界面。 <br/><br/>二、ASP模型 <br/><br/>浏览器从Web服务器上请求 .asp文件时，ASP 脚本开始运行。然后Web服务器调用ASP，ASP全面读取请求的文件，执行所有脚本命令，并将Web页传送给浏览器。 <br/><br/>ASP提供了一个在HTML页中使用现有脚本语言如 Microsoft VBScript 和 Microsoft JScript 的框架。 <br/><br/>ASP提供内建对象，这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息。包括Application、Request、Response、Server、Session 和ObjectContext 对象。其中最为常用的为Request、Response 和Server三个对象，它们分别用于从浏览器请求信息、向浏览器发送信息和访问服务器上对象的属性和方法。 <br/><br/>三、ADO <br/><br/>ASP和后台数据库连接使用微软的ADO(ActiveX Data Objects)，ADO是一项容易使用并且可扩展的将数据库访问添加到Web页的技术。可以使用ADO去编写紧凑简明的脚本以便连接到Open Database Connectivity(ODBC)兼容的数据库和 OLE DB兼容的数据源。 <br/><br/>ADO包含7个内置对象，它们分别为Connection、Command、RecordSet、Fields、Error、Parameters和Properties。通过这些对象，ASP可以完成对后台数据库的所有操作。 <br/><br/>四、ASP调用视图和存储过程 <br/><br/>在一般的MIS应用中，会有大量的报表，此时我们可以在后台数据库编写相应的视图或存储过程，用ASP通过ADO调用以完成报表工作。下面用一个例子说明相应的操作过程。 <br/><br/>1.创建 ODBC DSN 文件 <br/><br/>在创建数据库脚本之前，必须提供一条使ADO定位、标识和与数据库通讯的途径。数据库驱动程序使用Data Source Name (DSN) 定位和标识特定的ODBC兼容数据库，将信息从 Web 应用程序传递给数据库。 <br/><br/>2. 调用数据库视图 <br/><br/>访问数据库信息的第一步是和数据库源建立连接。ADO提供Connection对象，可以使用该对象建立和管理应用程序和 ODBC数据库之间的连接。 <br/><br/><br/>&lt;%<br/>Set Dataconn = Server.CreateObject(&quot;ADODB.Connection&quot;) &#039;建立连接对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;Dataconn.Open &quot;DSN=SinoTrans;SERVER=APP_SERVER;<br/>UID=sa;PWD=;APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Set cmdTemp = Server.CreateObject(&quot;ADODB.Command&quot;) &#039;建立命令对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;Set rst= Server.CreateObject(&quot;ADODB.Recordset&quot;) &#039;建立记录集对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;cmdTemp.CommandText = &quot;Customers &quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;cmdTemp.CommandType = 2<br/>&nbsp;&nbsp;&nbsp;&nbsp;Set cmdTemp.ActiveConnection = DataConn<br/>&nbsp;&nbsp;&nbsp;&nbsp;rst.Open cmdTemp, , 1, 3 &#039;生成查询结果<br/>%&gt;<br/> <br/><br/>此时，Customers为视图，从视图中查询数据与从基表中查询数据的方法是相同的。 <br/><br/>3.调用数据库存储过程 <br/><br/><br/>&lt;%<br/>Set Dataconn = Server.CreateObject(&quot;ADODB.Connection&quot;) &#039;建立连接对象<br/>Dataconn.Open &quot;DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;<br/>PWD=;APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes&quot;<br/>Set cmdTemp = Server.CreateObject(&quot;ADODB.Command&quot;) &#039;建立命令对象<br/>Set rst = Server.CreateObject(&quot;ADODB.Recordset&quot;) &#039;建立记录集对象<br/>cmdTemp.CommandText = &quot;dbo.pd_test&quot; &#039;存储过程名称<br/>cmdTemp.CommandType = 4 &#039;命令类别为4,表示为存储过程<br/>Set cmdTemp.ActiveConnection = Dataconn<br/>Set tmpParam = cmdTemp.CreateParameter(&quot;Return Value&quot;, 3, 4, 4)<br/>cmdTemp.Parameters.Append tmpParam<br/>Set tmpParam = cmdTemp.CreateParameter(&quot;@BeginDate&quot;, 135, 1, 16, riqi) <br/>&#039;创建输入参数对象<br/>cmdTemp.Parameters.Append tmpParam<br/>rst.Open cmdTemp, , 1, 3&nbsp;&nbsp;&nbsp;&nbsp;&#039;生成查询结果<br/>%&gt;<br/> <br/><br/>这里调用的存储过程为pd_test，这种是ADO中提供的标准方法，但存在一个问题，就是当在存储过程中有两个以上的Select语句，但从逻辑上又不可能同时执行的时候，ADO会提示你存储过程中Select语句太多，解决方法是直接用ADO的CONNECTION对象的EXECUTE方法直接执行存储过程，如下： <br/><br/><br/>&lt;%<br/>Set Dataconn = Server.CreateObject(&quot;ADODB.Connection&quot;) &#039;建立连接对象<br/>Dataconn.Open &quot;DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;<br/>APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes&quot;<br/>ss = &quot;EXECUTE dbo.pd_test &quot; &amp;amp; &quot;&#039;&quot; &amp;amp; riqi1 &amp;amp; &quot;&#039;&quot; <br/>Set rs = dataconn.Execute(ss)<br/>%&gt;<br/> <br/><br/>有关ASP和ADO使用的详细信息，请参阅 Microsoft ActiveX Data Objects (ADO) 和Active Server Pages（ASP）的详细参考。 <br/><br/>五、结束语 <br/><br/>在B/S结构的开发中，我们可以把一些商业规则或复杂查询用存储过程在DBMS中编写，然后用ASP中的ADO对象调用，完成原来C/S结构中的传统功能。
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post//#blogcomment</link>
<title><![CDATA[[评论] 用ASP调用SQL 视图和存储过程]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>