我正在迭代一个html表。
每一行都有一个id,表有2列/2个属性。
下面是我的循环:
Dim id
Dim prop1
Dim prop2
For Each id In Request.Form("id")
prop1 = Request.Form(id & "_prop1")
prop1 = Request.Form(id & "_prop2")
Next假设我想要更新数据库中的数据...我可能会把它放进那个循环
"UPDATE table SET prop1 = '" & prop1 & "', prop2 = '" & prop2 & "'" WHERE id = '" & id &
"'"什么是SQL存储过程?我该如何为这个操作实现一个存储过程?
例如,在此链接中:http://www.albofish.co.uk/ms-sql-stored-procedures-and-classic-asp/
我看不到您要更新的表的引用...我就是不明白。D‘’oh
下面的例子:http://www.ehow.com/way_5901555_tutorial-sql-stored-procedures.html
我不知道如何将我的表单值放入过程中?
发布于 2013-02-26 23:38:41
存储过程驻留在后端数据库中,而不是ASP代码中。在您发布的链接中,可能会让您感到困惑的是,它包含了用于执行服务器端过程的客户端代码,并没有显示出来。
在您的示例中,实际的存储过程本身将如下所示:
CREATE PROCEDURE dbo.MyProcedure
(
@prop1 varchar(255), --Fill in appropriate data types if necessary
@prop2 varchar(255),
@id int
)
AS
SET NOCOUNT ON;
UPDATE table
SET prop1 = @prop1,
prop2 = @prop2
WHERE id = @id;(@sgeddes是正确的,该过程应该包括SET NOCOUNT ON。我已经将其添加到我的示例中。)
然后,您可以使用以下客户端代码来调用该过程(我已经编辑了您的链接中的代码,以便更容易理解)。
'Create ADO command
Set cmd = Server.CreateObject("ADODB.Command")
With cmd
'Set up DB connection to use, set the type of SQL command
.ActiveConnection = db
.CommandType = adCmdStoredProc
.CommandText = "dbo.MyProcedure" ' Set the name of the Stored Procedure to use
'Add a 255 character varchar parameter
.Parameters.Append .CreateParameter("@prop1",adVarChar, adParamInput, 255)
.Parameters("@prop1") = "Prop 1 Value"
'Add a 255 character varchar parameter
.Parameters.Append .CreateParameter("@prop2",adVarChar, adParamInput, 255)
.Parameters("@prop2") = "Prop 2 Value"
'Add a integer parameter, then pass the value of the variable userID to it
.Parameters.Append .CreateParameter("@id",adInteger, adParamInput)
.Parameters("@id") = userID
'Execute the command
.Execute
End With
'Clean up
set cmd = nothing这显然比你现在拥有的代码要多得多。那你为什么要这么做呢?最重要的原因是安全性。通过创建参数化过程并在参数中传递值,您可以极大地降低任何类型的SQL注入攻击的可能性。
发布于 2013-02-26 23:36:34
SQL存储过程不同于ASP函数--存储过程是您在数据库中创建的东西。语法因您的RDBMS而异。但是像这样的东西:
CREATE PROCEDURE UpdateYourTable
@id int,
@prop1 nvarchar(50).
@prop2 nvarchar(50)
AS
SET NOCOUNT ON;
UPDATE table
SET prop1 = @prop1, prop2 = @prop2
WHERE id = @id
GO然后,您将通过您的代码调用此存储过程,这与您发布的文章非常相似。
https://stackoverflow.com/questions/15092616
复制相似问题