【问题标题】:Can I use the update statement with the select statement together in an SqlDataSource?我可以在 SqlDataSource 中同时使用 update 语句和 select 语句吗?
【发布时间】:2015-04-01 11:29:29
【问题描述】:

我的查询如下所示:

<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>

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

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

【问题讨论】:

    标签: c# asp.net sqldatasource


    【解决方案1】:

    在更新命令中,您应该使用@ 而不是:。即:

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

    另外你必须指定@currentusername 作为更新参数

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

    【讨论】:

    • 现在我也将 currentusername 更改为更新参数,但是当我点击按钮时,它什么也没做,它没有显示任何错误,它只是永远加载。
    • 它不适用于@符号,它显示 ORA-00936 缺少表达式异常。
    • @kisbovan93 - ORA-00936 表示表达式末尾缺少分号;我已经更新了示例
    • 不,它显示完全相同的错误:ora-00936,不幸的是即使使用分号。
    猜你喜欢
    • 2010-11-05
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多