我可以在SqlDataSource中将update语句与select语句一起使用吗?

时间:2015-04-01 11:29:30

标签: c# asp.net sqldatasource

我的查询如下:

<asp:SqlDataSource ID="UpdateFullNameSQL" runat="server" ConnectionString="<%$ ConnectionStrings:UserQueries %>" ProviderName="<%$ ConnectionStrings:UserQueries.ProviderName %>" 
        UpdateCommand="update users set firstname = :changefirstname, lastname = :changelastname where username = :currentusername">
        <UpdateParameters>
            <asp:ControlParameter ControlID="ChangeFirstNameBox" Name="changefirstname" PropertyName="Text" Type="Empty" />
            <asp:ControlParameter ControlID="ChangeLastNameBox" Name="changelastname" PropertyName="Text" Type="Empty" />
        </UpdateParameters>
        <SelectParameters>
            <asp:ControlParameter ControlID="UsernameBox" Name="currentusername" PropertyName="Text" Type="Empty" />
        </SelectParameters>
    </asp:SqlDataSource>

所以我有两个我想要更新的参数和一个我想用来更改数据的参数,它与selectparameter的数据匹配。当我想执行它时,它会显示ORA-01008异常。 我的代码隐藏只有一个updatefullnamesql.update();功能

我在这里错过了什么/做错了什么?

1 个答案:

答案 0 :(得分:0)

在更新命令中,您应使用@代替:。即:

UpdateCommand="update users set firstname = @changefirstname, 
  lastname = @changelastname where username = @currentusername;"

此外,您必须将@currentusername指定为更新参数

<UpdateParameters>
  ...
  <asp:ControlParameter ControlID="UsernameBox" 
    Name="currentusername" PropertyName="Text" Type="Empty" />
</UpdateParameters>