一使用Command对象和Parameter对象传递参数
本讲将主要使用Microsoft SQL Server数据库先建立一个连接文件AdoSQLasp备用以后用到时不再特别说明
<% AdoSQLasp
Option Explicit
ResponseExpires =
第一部分: 建立连接
Dim Cnn StrCnn
Set Cnn = ServerCreateObject(ADODBConnection)
StrCnn = Provider=sqloledb; User ID=sa; Password=; Initial Catalog=pubs; Data Source=ICBCZJP
CnnOpen StrCnn
%>
注意自己使用时要将Data Source设为你的数据库服务器所在的机器名
另外以前使用Access数据库时用Microsoft Access可以很方便的查看字段及数据而使用SQL Server数据库尤其是并不在数据库服务器而是在另一台机器上调试ASP脚本时要查看字段及数据便需另外安装工具这里向你提供一个工具Msqryexe(Microsoft Query)这个文件随Office安装一般位于目录Microsoft Office\Office下
例wufasp
<%@ LANGUAGE=VBSCRIPT %>
<!#include file=AdoSQLasp>
<!#include file=adovbsinc>
<% wufasp
Dim cmdTest prmTest rsTest
创建 Command 对象
Set cmdTest = ServerCreateObject(ADODBCommand)
RecordsetCommand对象都可以通过ActiveConnection属性来连接Connection对象
cmdTestActiveConnection = Cnn
SQL命令 含两个参数 用 ? 表示
cmdTestCommandText = Update jobs Set job_desc = ? Where job_id = ?
设命令类型为 SQL 语句
cmdTestCommandType = adCmdText
Prepared 属性决定是否将 SQL 命令先行编译将其设为True可以加快运行
cmdTestPrepared = True
创建 Parameter 对象
Set prmTest=cmdTestCreateParameter(job_descadVarCharadParamInput网络)
将数据追加到 Parameters 数据集合中
cmdTestParametersAppend prmTest
Set prmTest = cmdTestCreateParameter(job_idadSmallIntadParamInput)
cmdTestParametersAppend prmTest
执行修改 – 不需要返回结果简单的使用cmdTestExecute 就可以了
cmdTestExecute
重新设置参数运行 – 便可修改另一条数据
cmdTestParameters(job_id) =
cmdTestParameters(job_desc) = 测试
cmdTestExecute
重新设置参数运行
cmdTest(job_id) =
cmdTest(job_desc) = 金融
cmdTestExecute
Set rsTest = CnnExecute(Select job_idjob_desc From jobs)
While Not rsTestEOF
ResponseWrite rsTest() & rsTest() & <br>
rsTestMoveNext
Wend
Cnnclose : Set prmTest = Nothing
Set cmdTest = Nothing: Set Cnn = Nothing
%>
分析
.Command对象的CreateParameter方法用来为SQL命令或存储过程建立参数对象共有五个参数(五个参数都是可选项)
第一个参数参数对象的名称
第二个参数参数对象的数据类型种类太多还是参考ADO帮助吧这里adVarChar(字符串值)adSmallInt( 字节带符号整型)
第三个参数参数类型可以是adParamInput(指示输入参数)adParamOutput( 指示为输出参数)adParamReturnValue(指示为返回值)adParamUnknown(指示参数类型无法确定)adParamInputOutput(指示为输入/输出参数)
第四个参数参数的数据长度最好指定为与数据库中对应字段长度相等以免使用时出错尤其数据类型为VarChar时如果是整型或日期型则不必提供该值
第五个参数参数的设置初值
.cmdTestParametersAppend方法增加一个Parameter对象到Parameters数据集合中从本例中也可看到如何使用多个参数
.从本例可以看到只需要重新设定输入参数便可执行对其他数据的修改非常方便这一思路在编程时也是最常用的方法之一
.重设参数既可以使用cmdTestParameters也可以省略为cmdTest(job_id)
二在ASP中使用存储过程
什么是存储过程(存储过程位于数据库服务器中是一个SQL语句的集合可包含一个或多个SQL语句)怎样创建存储过程不属于本讲座的内容本讲座主要是举例说明在ASP中如何调用存储过程
使用存储过程的好处是大大的存储过程比在ASP脚本中运行SQL命令效率更高可以提高整体性能并减轻网络负载(减少了在网络服务器和数据服务器之间的交互)可以优化ASP代码和增强代码灵活性等等
(一)在存储过程中使用输入参数
本例中使用的存储过程为SQL Server自带的byroyalty里面的一条SQL语句非常简单无非是多了一个CREATE PROCEDURE byroyalty并且有一个输入参数为@percentage
CREATE PROCEDURE byroyalty @percentage int
AS
select au_id from titleauthor
where titleauthorroyaltyper = @percentage
serve by
例wufasp
<% @LANGUAGE = VBScript %>
<!#include file=AdoSQLasp>
<!#include file=adovbsinc>
<% wufasp
Dim cmdTest prmTest rsTest
Set cmdTest = ServerCreateObject(ADODBCommand)
cmdTestCommandText = byroyalty存储过程名
设命令类型为 存储过程
cmdTestCommandType = adCmdStoredProc
创建 Parameter 对象
Set prmTest = ServerCreateObject(ADODBParameter)
Type属性对应wufasp中的第二个参数
prmTestType = adInteger 字节的带符号整型
Direction属性对应wufasp中的第三个参数
prmTestDirection = adParamInput
Value属性对应wufasp中的第五个参数
prmTestValue =
cmdTestParametersAppend prmTest
Set cmdTestActiveConnection = Cnn
需要返回一个记录集故使用Set rsTest = cmdTestExecute
Set rsTest = cmdTestExecute
While Not rsTestEOF
ResponseWrite rsTest()& <br>
rsTestMoveNext
Wend
Cnnclose
Set rsTest = Nothing : Set prmTest = Nothing
Set cmdTest = Nothing: Set Cnn = Nothing
%>
CommandText属性既可以指定SQL命令也可以指定为存储过程或者是表名称
在本例中创建Parameter对象与wufasp略有不同其实仔细看看意思也是差不多的本例还有两个属性未用prmTestNameprmTestSize加上TypeDirection和Value对应于wufasp中的五个参数
(二)使用输出参数
从数据库表中取得一个记录或计算一个值时需要使用返回输出参数的存储过程为了举例先在SQL Server的pubs库中新建一存储过程OUTemploy该存储过程需要输入两个日期然后输出一个最大值
CREATE PROCEDURE OUTemploy
(
@job_lvl tinyint OUTPUT
@hire_date datetime
@hire_date datetime
)
AS
select @job_lvl = MAX(job_lvl) from employee
where hire_date >= @hire_date and hire_date <= @hire_date
有多种方法可以建立存储过程
.使用Microsoft SQL Server的Enterprise Manager打开后在左边的树目录中依次打开Console Root – Microsoft SQL Servers – SQL Server Group – ICBCZJP(Windows NT) – databases – pubs – stored procedure – New stored procedure输入存储过程后还可对其进行语法检测
.使用Microsoft SQL Server的Query Analyzer先连接数据库服务器并选择pubs数据库输入上面的存储过程并点击Execute Query(或按F)
.使用VB打开菜单视图/数据视图窗口后右键单击数据链接/新建数据链接
.使用ASP脚本创建存储过程例wufasp
<% @LANGUAGE = VBScript %>
<!#include file=AdoSQLasp>