【发布时间】:2017-04-12 01:50:44
【问题描述】:
我正在尝试从更新查询中更新/编辑用户详细信息,但出现错误必须声明标量变量@RegID。我尝试使用查询,但仍然出现相同的错误。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:rm3558nConnectionString2 %>" DeleteCommand="DELETE FROM [Registration] WHERE [RegID] = @original_RegID" InsertCommand="INSERT INTO [Registration] ([First Name], [Last Name], [Email ID], [Password], [Confirm Password], [DOB], [Gender]) VALUES (@First_Name, @Last_Name, @Email_ID, @Password, @Confirm_Password, @DOB, @Gender)" SelectCommand="SELECT * FROM [Registration] WHERE ([Email ID] = @Email_ID)" UpdateCommand="UPDATE [Registration] SET [First Name] = @First_Name, [Last Name] = @Last_Name, [Email ID] = @Email_ID, [Password] = @Password, [Confirm Password] = @Confirm_Password, [DOB] = @DOB, [Gender] = @Gender WHERE [RegID] = @original_RegID" OldValuesParameterFormatString="original_{0}">
<DeleteParameters>
<asp:Parameter Name="original_RegID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="First_Name" Type="String" />
<asp:Parameter Name="Last_Name" Type="String" />
<asp:Parameter Name="Email_ID" Type="String" />
<asp:Parameter Name="Password" Type="String" />
<asp:Parameter Name="Confirm_Password" Type="String" />
<asp:Parameter DbType="Date" Name="DOB" />
<asp:Parameter Name="Gender" Type="String" />
</InsertParameters>
<SelectParameters>
<asp:ControlParameter ControlID="Namelbl" Name="Email_ID" PropertyName="Text" Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="First_Name" Type="String" />
<asp:Parameter Name="Last_Name" Type="String" />
<asp:Parameter Name="Email_ID" Type="String" />
<asp:Parameter Name="Password" Type="String" />
<asp:Parameter Name="Confirm_Password" Type="String" />
<asp:Parameter DbType="Date" Name="DOB" />
<asp:Parameter Name="Gender" Type="String" />
<asp:Parameter Name="original_RegID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
网格视图
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="RegID" DataSourceID="SqlDataSource1" ForeColor="Black" GridLines="Horizontal">
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="RegID" HeaderText="RegID" InsertVisible="False" ReadOnly="True" SortExpression="RegID" />
<asp:BoundField DataField="First Name" HeaderText="First Name" SortExpression="First Name" />
<asp:BoundField DataField="Last Name" HeaderText="Last Name" SortExpression="Last Name" />
<asp:BoundField DataField="Email ID" HeaderText="Email ID" SortExpression="Email ID" />
<asp:BoundField DataField="Password" HeaderText="Password" SortExpression="Password" />
<asp:BoundField DataField="Confirm Password" HeaderText="Confirm Password" SortExpression="Confirm Password" />
<asp:BoundField DataField="DOB" HeaderText="DOB" SortExpression="DOB" />
<asp:BoundField DataField="Gender" HeaderText="Gender" SortExpression="Gender" />
</Columns>
<FooterStyle BackColor="#CCCC99" ForeColor="Black" />
<HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />
<SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F7F7F7" />
<SortedAscendingHeaderStyle BackColor="#4B4B4B" />
<SortedDescendingCellStyle BackColor="#E5E5E5" />
<SortedDescendingHeaderStyle BackColor="#242121" />
</asp:GridView>
【问题讨论】:
-
@Div 没有帮助
-
您的查询似乎可以运行,您是否将
SqlDataSource绑定到另一个控件(例如GridView)?确保您的Bind命令不包含这样的括号:<%# Bind("[RegID]") %> -
@TetsuyaYamamoto 我也编辑并添加了网格视图代码,请看上面
-
我发现您的问题并不是真正来自
UpdateCommand,而是来自您的SelectCommand。SelectCommand="SELECT * FROM [Registration] WHERE ([Email ID] = @Email_ID)在不使用别名的情况下返回 所有 字段名称,并且当绑定到GridView时,您的列名称上不能有空格。尝试使用SelectCommand中的下划线为每个列名称添加别名,并使用下划线更改所有BoundField名称。
标签: c# asp.net sql-server visual-studio sql-update