我的查询适用于Access,但不适用于Visual Studio

时间:2013-08-19 02:47:27

标签: asp.net sql visual-studio-2010

我在Access中运行的查询在我的网站上执行时似乎无法运行。这是我希望数据库为以下内容填充内容的网页代码:

    <asp:AccessDataSource ID="AccessDataSource1" runat="server" 
                        DataFile="~/App_Data/TravelJoansDB.accdb" 
                        SelectCommand="SELECT * FROM [Table2] INNER JOIN BlogEntryItems ON Table2.ID=BlogEntryItems.BlogID AND Table2.ID=@ID">
                        <SelectParameters>
                            <asp:QueryStringParameter Name="ID" QueryStringField="Table2.ID" Type="Decimal" />                    
                        </SelectParameters>
                        </asp:AccessDataSource>

    <asp:DataList ID="DataList1" DataSourceID="AccessDataSource1" 
            runat="server" ItemStyle-CssClass="picTableStyle"
            DataKeyField="Table.2ID">
            <ItemStyle></ItemStyle>
            <ItemTemplate>
                <table>
                   <tr>
                      <td>
                         <asp:Image ID="Image1" runat="server" ImageUrl='<%# "PlaceImages/" + Eval("Image") %>' /><br />
                         <asp:Label ID="Label1" CssClass="picCaptionStyle" runat="server" Text='<%# Eval("Caption") %>' />
                      </td>
                   </tr>
                   <tr>
                      <td>
                      <asp:Label ID="Label4" class="picBodyText" runat="server" Text='<%# Eval("PicStory") %>' />
                      </td>
                   </tr>
                </table>
            </ItemTemplate>

    </asp:DataList>

当我取出联接时,它运行正常。我添加了连接并且它没有给我任何错误或任何东西,它似乎没有结果它在我的网站上显示。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

请注意,我没有参与AccessDataSource。但是,查看文档 - 这是您应该研究的内容

  • 更改要使用的查询?而不是@ID
    SelectCommand="SELECT * FROM [Table2] INNER JOIN BlogEntryItems ON Table2.ID=BlogEntryItems.BlogID AND Table2.ID= ?"
  

因为AccessDataSource控件扩展了SqlDataSource类   并使用System.Data.OleDb提供程序,指定参数   占位符使用“?”占位符字符。

参考:http://msdn.microsoft.com/en-us/library/8e5545e1%28v=vs.100%29.aspx

  • 如果上述操作无效,请省略参数的数据类型(Decimal)或指定相关类型,例如Integer