我正在编写以下代码来更新SQL Server。我收到以下错误消息:
'-'附近的语法不正确。必须声明标量变量“ @id”。 说明:在执行期间发生未处理的异常 当前的Web请求。请查看堆栈跟踪以获取更多信息 有关错误及其在代码中起源的信息。
异常详细信息:System.Data.SqlClient.SqlException:不正确 '-'附近的语法。必须声明标量变量“ @id”。
源错误:
在执行过程中生成了未处理的异常 当前的Web请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
堆栈跟踪:
[SqlException(0x80131904):'-'附近的语法不正确。必须声明 标量变量“ @id”。]
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="id" DataSourceID="SqlDataSource2" ForeColor="#333333" GridLines="None" AllowSorting="True">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:TemplateField HeaderText="id" InsertVisible="False" SortExpression="id">
<EditItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="E-mail" HeaderText="E-mail" SortExpression="E-mail" />
</Columns>
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" ForeColor="White" Font-Bold="True" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="White" HorizontalAlign="Center" BackColor="#2461BF" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:demoConnectionString4 %>"
SelectCommand="SELECT * FROM [de]"
UpdateCommand="UPDATE [de] SET [Name]=@Name, [E-mail]=@column1 WHERE [id]=@id">
<UpdateParameters>
<asp:Parameter Name="id" Type="Int32" />
<asp:Parameter Name="Name" Type="String"/>
<asp:Parameter Name="column1" Type="String"/>
</UpdateParameters>
</asp:SqlDataSource>
答案 0 :(得分:1)
错误发生在ID模板字段上,您在Label
上使用了EditItemTemplate
来显示ID,并且此标签并没有发回该ID sql更新。 asp:label
不会呈现此处所需的输入字段。
要么删除TemplateField,然后将asp:BoundField
用作其余字段,并在更新每行时自动创建输入字段,就可以将其设为read only text box
(在EditImteTemplate
上)因此可以发布ID。
这行是您需要重点关注和更改的:
<asp:TemplateField HeaderText="id" InsertVisible="False" SortExpression="id">
<EditItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>