|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。存储进程 ASP与存储进程(Stored Procedures)的文章很多,然而我嫌疑作者们是不是真正理论过。我在初学时查阅过大批相干材料,发明个中供应的良多办法实践操作起来并非那末回事。关于复杂的使用,这些材料或许是有匡助的,但仅限于此,由于它们基本就是一模一样,相互剽窃,略微庞杂点的使用,就全都语焉不详了。
如今,我根基上经由过程挪用存储进程会见SQL Server,以下的文字都是理论的总结,但愿对人人能有匡助。
存储进程就是作为可履行对象寄存在数据库中的一个或多个SQL号令。
界说老是很笼统。存储进程其实就是能完成必定操作的一组SQL语句,只不外这组语句是放在数据库中的(这里咱们只谈SQL Server)。假如咱们经由过程创立存储进程和在ASP中挪用存储进程,就能够防止将SQL语句同ASP代码混同在一同。如许做的优点最少有三个:
第1、大大进步效力。存储进程自己的履行速度十分快,并且,挪用存储进程可以大大削减同数据库的交互次数。
第2、进步平安性。假设将SQL语句夹杂在ASP代码中,一旦代码掉密,同时也就意味着库布局掉密。
第3、有益于SQL语句的重用。
在ASP中,普通经由过程command对象挪用存储进程,依据分歧情形,本文也引见其它挪用办法。为了便利申明,依据存储进程的输出输入,作以下复杂分类:
1. 只前往单一纪录集的存储进程
假定有以下存储进程(本文的目标不在于讲述T-SQL语法,所以存储进程只给出代码,不作申明):
/*SP1*/
CREATE PROCEDURE dbo.getUserList
as
set nocount on
begin
select * from dbo.[userinfo]
end
go
以上存储进程获得userinfo表中的一切纪录,前往一个纪录集。经由过程command对象挪用该存储进程的ASP代码以下:
'**经由过程Command对象挪用存储进程**
DIM MyComm,MyRst
Set MyComm = Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection = MyConStr 'MyConStr是数据库毗连字串
MyComm.CommandText = "getUserList" '指定存储进程名
MyComm.CommandType = 4 '标明这是一个存储进程
MyComm.Prepared = true '请求将SQL号令先行编译
Set MyRst = MyComm.Execute
Set MyComm = Nothing
存储进程获得的纪录集赋给MyRst,接上去,可以对MyRst停止操作。
在以上代码中,CommandType属性标明恳求的类型,取值及申明以下:
-1 标明CommandText参数的类型没法肯定
1 标明CommandText是普通的号令类型
2 标明CommandText参数是一个存在的表称号
4 标明CommandText参数是一个存储进程的称号
还可以经由过程Connection对象或Recordset对象挪用存储进程,办法分离以下:
'**经由过程Connection对象挪用存储进程**
DIM MyConn,MyRst
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.open MyConStr 'MyConStr是数据库毗连字串
Set MyRst = MyConn.Execute("getUserList",0,4) '最初一个参断寄义同CommandType
Set MyConn = Nothing
'**经由过程Recordset对象挪用存储进程**
DIM MyRst
Set MyRst = Server.CreateObject("ADODB.Recordset")
MyRst.open "getUserList",MyConStr,0,1,4
'MyConStr是数据库毗连字串,最初一个参断寄义与CommandType不异
2. 没有输出输入的存储进程
请看以下存储进程:
/*SP2*/
CREATE PROCEDURE dbo.delUserAll
as
set nocount on
begin
delete from dbo.[userinfo]
end
go
该存储进程删去userinfo表中的一切纪录,没有任何输出及输入,挪用办法与下面讲过的根基不异,只是不必获得纪录集:
'**经由过程Command对象挪用存储进程**
DIM MyComm
Set MyComm = Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection = MyConStr 'MyConStr是数据库毗连字串
MyComm.CommandText = "delUserAll" '指定存储进程名
MyComm.CommandType = 4 '标明这是一个存储进程
MyComm.Prepared = true '请求将SQL号令先行编译
MyComm.Execute '此处不用再获得纪录集
Set MyComm = Nothing
固然也可经由过程Connection对象或Recordset对象挪用此类存储进程,不外创立Recordset对象是为了获得纪录集,在没有前往纪录集的情形下,仍是使用Command对象吧。
[1] [2] [3] 下一页
</p> 当然了,现在国内CRM厂商的产品与其说是CRM,但从至少从我的角度分析上来看,充其量只是一个大型的进销存而已了,了解尚浅,不够胆详评,这里只提技术问题 |
|