У меня есть GridView с кнопкой Update. Я хочу обновить поле в базе данных, но я думаю в коде ниже, вызывает проблему на моей странице.NET ASP. Что может быть сделано в сетке или в операторе (UpdateCommand) обновления? Отметьте, я получаю Рты 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"
":OBJECTID" в языке Oracle является переменной привязки.
Я не разбираюсь в семантике asp.net, но вы захотите использовать здесь переменные привязки. Эта ссылка должна дать более полное объяснение, но в основном это следующее:
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
с тем же эффектом.
Oracle обычно имеет :
вместо @
:
WHERE OBJECTID = :OBJECTID
Или, возможно, objectid - это зарезервированное слово, которое вы можете экранировать с помощью "
в Oracle:
WHERE "OBJECTID" = :OBJECTID
Или, возможно, вам нужно указать параметр в ASP.NET:
<asp:SqlDataSource ...>
<UpdateParameters>
<asp:Parameter Type="Int32" Name="ObjectId" />
</UpdateParameters>
</asp:SqlDataSource>