【问题标题】:Incorrect syntax near the keyword 'WHERE' once added variable for total为总计添加变量后,关键字“WHERE”附近的语法不正确
【发布时间】:2011-11-10 16:49:17
【问题描述】:

我遇到了这个问题,一旦我计算出将(数量 * 价格)显示为来自 ShoppingCart 的总计,它设法显示用户购买的总项目的总计,但我无法在列中更新或删除当我立即更新它时,给我这个错误“关键字'WHERE'附近的语法不正确”

我将在此处提供代码:

<asp:GridView ID="GridView2" runat="server" AllowPaging="True" 
                    AutoGenerateColumns="False" CellPadding="4" 
                    DataSourceID="SqlDataSource2" ForeColor="#333333" GridLines="None" 
                    AllowSorting="True">
                    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                    <RowStyle BackColor="#EFF3FB" />
                    <Columns>
                        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
                        <asp:BoundField DataField="ProductID" HeaderText="ProductID" 
                            SortExpression="ProductID" />
                        <asp:BoundField DataField="UserName" HeaderText="UserName" 
                            SortExpression="UserName" />
                        <asp:BoundField DataField="InsertDate" HeaderText="InsertDate" 
                            SortExpression="InsertDate" />
                        <asp:BoundField DataField="Quantity" HeaderText="Quantity" 
                            SortExpression="Quantity" />
                        <asp:BoundField DataField="Price" HeaderText="Price" 
                            SortExpression="Price" />
                        <asp:BoundField DataField="OrderID" HeaderText="OrderID" 
                            SortExpression="OrderID" />
                        <asp:BoundField DataField="Total" HeaderText="Total" 
                            SortExpression="Total" />
                    </Columns>
                    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                    <EditRowStyle BackColor="#2461BF" />
                    <AlternatingRowStyle BackColor="White" />
                </asp:GridView>
                <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                    ConflictDetection="CompareAllValues" 
                    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
                    DeleteCommand="DELETE FROM [ShoppingCart] WHERE [CartID] = @original_CartID AND [ProductID] = @original_ProductID AND [UserName] = @original_UserName AND [InsertDate] = @original_InsertDate AND [Quantity] = @original_Quantity AND [Price] = @original_Price AND [OrderID] = @original_OrderID AND [Total]= @original_Total" 
                    InsertCommand="INSERT INTO [ShoppingCart] ([ProductID], [UserName], [InsertDate], [Quantity], [Price], [OrderID], [Total]) VALUES (@ProductID, @UserName, @InsertDate, @Quantity, @Price, @OrderID, @Total)" 
                    OldValuesParameterFormatString="original_{0}" 
                    SelectCommand="SELECT  [ProductID], [UserName], [InsertDate], [Quantity], [Price], [OrderID], (Quantity * Price) As Total FROM [ShoppingCart]" 


                    UpdateCommand="UPDATE [ShoppingCart] SET [ProductID] = @ProductID, [UserName] = @UserName, [InsertDate] = @InsertDate, [Quantity] = @Quantity, [Price] = @Price, [OrderID] = @OrderID, [Total]= @Total, WHERE [CartID] = @original_CartID AND [ProductID] = @original_ProductID AND [UserName] = @original_UserName AND [InsertDate] = @original_InsertDate AND [Quantity] = @original_Quantity AND [Price] = @original_Price AND [OrderID] = @original_OrderID AND [Total]= @Total">
                    <DeleteParameters>
                        <asp:Parameter Name="original_CartID" Type="Int32" />
                        <asp:Parameter Name="original_ProductID" Type="Int32" />
                        <asp:Parameter Name="original_UserName" Type="String" />
                        <asp:Parameter Name="original_InsertDate" Type="DateTime" />
                        <asp:Parameter Name="original_Quantity" Type="Int32" />
                        <asp:Parameter Name="original_Price" Type="Decimal" />
                        <asp:Parameter Name="original_OrderID" Type="Int32" />
                        <asp:Parameter Name="original_Total" Type="Decimal" />
                    </DeleteParameters>
                    <InsertParameters>
                        <asp:Parameter Name="ProductID" />
                        <asp:Parameter Name="UserName" />
                        <asp:Parameter Name="InsertDate" />
                        <asp:Parameter Name="Quantity" />
                        <asp:Parameter Name="Price" />
                        <asp:Parameter Name="OrderID" />
                        <asp:Parameter Name="Total" />
                    </InsertParameters>
                    <UpdateParameters>
                        <asp:Parameter Name="ProductID" Type="Int32" />
                        <asp:Parameter Name="UserName" Type="String" />
                        <asp:Parameter Name="InsertDate" Type="DateTime" />
                        <asp:Parameter Name="Quantity" Type="Int32" />
                        <asp:Parameter Name="Price" Type="Decimal" />
                        <asp:Parameter Name="OrderID" Type="Int32" />
                        <asp:Parameter Name="Total" Type="Decimal" />
                        <asp:Parameter Name="original_CartID" Type="Int32" />
                        <asp:Parameter Name="original_ProductID" Type="Int32" />
                        <asp:Parameter Name="original_UserName" Type="String" />
                        <asp:Parameter Name="original_InsertDate" Type="DateTime" />
                        <asp:Parameter Name="original_Quantity" Type="Int32" />
                        <asp:Parameter Name="original_Price" Type="Decimal" />
                        <asp:Parameter Name="original_OrderID" Type="Int32" />
                        <asp:Parameter Name="original_Total" Type="Decimal" />
                    </UpdateParameters>
                </asp:SqlDataSource>

请指导我,我不知道错误是什么意思。这是给可以在购物车中更新或删除的管理员

【问题讨论】:

  • ... [Total]= @Total, WHERE之前不是多了一个逗号吗?
  • @AlexK。你为什么不把它作为答案?
  • 它现在显示不同的列名“总计”无效。我想用总计列名替换什么,因为它是数量 * 价格。它可以显示总计,但在编辑时数量列看起来像这样......
  • 当我将 Total 变量更改为 Quantity * Price 时,错误变成这样 '*' 附近的语法不正确。必须声明标量变量“@original_CartID”。请在这方面帮助我。谢谢

标签: asp.net sql-server shopping-cart sql-update aspxgridview


【解决方案1】:

更新命令中的问题

UpdateCommand="UPDATE [ShoppingCart] SET [ProductID] = @ProductID, [UserName] = @UserName, [InsertDate] = @InsertDate, [Quantity] = @Quantity, [Price] = @Price, [OrderID] = @OrderID, [Total]= @Total, WHERE [CartID] = @original_CartID AND [ProductID] = @original_ProductID AND [UserName] = @original_UserName AND [InsertDate] = @original_InsertDate AND [Quantity] = @original_Quantity AND [Price] = @original_Price AND [OrderID] = @original_OrderID AND [Total]= @Total">

在查询中,WHERE 前有逗号 找到这个,

[Total]= @Total, WHERE [CartID] = @original_CartID

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2016-06-08
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多