2010-08-16 129 views
2

我创建了参数化查询来获取文章/页面内容,如下所示;通过参数化查询传递值

<% 
     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

+0

的确详细而复杂......究竟是什么问题?是'rsArticle'工作时的第一个代码吗?因为,如果是这样,你实际上“通过参数化查询传递值”就好了。 – cregox 2010-08-16 16:48:13

回答

2

您需要创建一个Class来定义来自DB的获取输出和一个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> 
+0

嘿安东尼,非常感谢你。这里只有一个错误; Microsoft VBScript编译错误“800a03f2”,预期标识符/includes/pagecontent.asp,第2行 公共类文章 ------- ^ – doubleplusgood 2010-08-16 13:06:08

0

刚过了“Set rsArticle = Nothing”试试这个,让我们知道了什么发生:

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