我有一个带有更新按钮的GridView。我想更新数据库中的一个字段,但我认为下面代码中的'@'导致我的ASP .NET页面出现问题。在网格或更新(UpdateCommand)语句中可以做什么?注意,我收到一个Ora 00936错误。
<asp:SqlDataSource ID="dsBooks" runat="server"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT OBJECTID, TRACT, GIS_ACRES, COMMENTS, PDF_STORAGE FROM CampusDev.CU_POLY ORDER BY OBJECTID"
UpdateCommand="UPDATE CampusDev.CU_POLY SET COMMENTS='just atest' WHERE OBJECTID=@OBJECTID"
答案 0 :(得分:1)
Oracle通常有:
而不是@
:
WHERE OBJECTID = :OBJECTID
或许objectid是一个保留字,你可以在Oracle中使用"
转义:
WHERE "OBJECTID" = :OBJECTID
或许你必须为ASP.NET指定一个参数:
<asp:SqlDataSource ...>
<UpdateParameters>
<asp:Parameter Type="Int32" Name="ObjectId" />
</UpdateParameters>
</asp:SqlDataSource>
答案 1 :(得分:1)
Oracle用语中的“:OBJECTID”是一个绑定变量。
我对asp.net语义一无所知,但你会想在这里使用绑定变量。 This link应提供更完整的解释,但基本上就是这样:
cmd.Parameters.Add(new OracleParameter(“OBJECTID″, @OBJECTID));
UpdateCommand="UPDATE CampusDev.CU_POLY
SET COMMENTS='just atest' WHERE OBJECTID=:OBJECTID"
然后执行你的命令。
始终在生产代码中尽可能使用绑定变量 - 它允许Oracle避免对SQL语句进行硬解析。
此外,绑定变量的名称对Oracle来说并不重要。它出现的顺序是重要的方面。你可以这么容易地说
WHERE OBJECTID=:1
具有相同的效果。