通过参数化查询传递值

时间:2010-08-16 11:48:38

标签: sql asp-classic

我已经创建了一个参数化查询来获取文章/页面内容,如下所示;

<%
        article = cint(request("article"))

        Set conn = Server.CreateObject("ADODB.connection")
        conn.Open Application("database")
        Set cmd = Server.CreateObject("ADODB.command")
        With cmd
                .ActiveConnection = conn
                .CommandType = adCmdStoredProc
                .CommandText = "prc_getArticle"
                .Parameters.Append .CreateParameter("@ArticleID", adInteger, adParamInput,, article)
                Set rsArticle = .Execute
        End With
        While Not rsArticle.EOF

        article = rsArticle.fields("art_id")
        arttitle  = rsArticle.fields("art_title")
        artcontent  = rsArticle.fields("art_content")

        rsArticle.MoveNext
        Wend
        rsArticle.Close()
        Set rsArticle = Nothing
%>

上面的查询放在一个包含文件中,该文件从页面请求“文章”以获取文章内容,但我不知道如何将其传递给查询。

我在查询中有以下行;

.Parameters.Append .CreateParameter("@ArticleID", adInteger, adParamInput,, article)

注意最后的“文章”,但显然这不是从这一行引用所请求文章的正确方法;

article = cint(request("article"))

在我的实际页面中,我包含一个包含上述代码的文件,然后在页面中也有以下内容;

<%
article = 22
%>

<h1><%=arttitle%></h1>

显然目前,这并不是要抓取内容输出到页面中。想知道是否有人可能在我相当冗长的问题后提供帮助?

谢谢。 :d

2 个答案:

答案 0 :(得分:2)

您需要创建一个Class来定义来自数据库的获取输出,并创建Function以创建一个用文章详细信息填充的该类的适当实例。

将您的包含文件修改为: -

Public Class Article
    public ID
    public Title
    public Content
End Class

Function GetArticle(article)

    Dim conn: Set conn = Server.CreateObject("ADODB.connection") 
    conn.Open Application("database") 

    Dim cmd: Set cmd = Server.CreateObject("ADODB.command") 
    Dim rsArticle
    cmd.ActiveConnection = conn 
    cmd.CommandType = adCmdStoredProc 
    cmd.CommandText = "prc_getArticle" 
    cmd.Parameters.Append cmd.CreateParameter("@ArticleID", adInteger, adParamInput,, article) 
    Dim rsArticle: Set rsArticle = cmd.Execute 

    IF Not rsArticle.EOF Then
       Set GetArticle = new Article;

       GetArticle.ID = rsArticle.fields("art_id") 
       GetArticle.Title  = rsArticle.fields("art_title") 
       GetArticle.Content  = rsArticle.fields("art_content")  
    Else
       Set GetArticle = Nothing
    End If

    rsArticle.Close() 
End Function

有了这个包含就可以了: -

 <%
    Dim article : Set article = GetArticle(22)
 %>

 <h1><%=article.Title%></h1>
 <div><%=article.Content%></div>

答案 1 :(得分:0)

在“Set rsArticle = Nothing”尝试之后,让我们知道会发生什么:

    <h1><%= arttitle %></h1>
    <%= article %> - <%= artcontent %>