Обновление синтаксиса для Oracle 10g с использованием ASP.NET - PullRequest
1 голос
/ 06 июля 2010

У меня есть GridView с кнопкой Обновить.Я хочу обновить поле в базе данных, но я думаю, что '@' в коде ниже вызывает проблему на моей странице ASP .NET.Что можно сделать в сетке или в операторе update (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"

Ответы [ 2 ]

1 голос
/ 07 июля 2010

": 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.

Кроме того, имя переменной Bind не имеет значения для Oracle.Порядок, в котором это появляется, является важным аспектом.Вы могли бы так же легко сказать

WHERE OBJECTID=:1

с тем же эффектом.

1 голос
/ 06 июля 2010

Oracle обычно имеет : вместо @:

WHERE OBJECTID = :OBJECTID

Или, возможно, objectid - это зарезервированное слово, которое вы можете использовать с помощью " в Oracle:

WHERE "OBJECTID" = :OBJECTID

Или, возможно, вам придется указать параметр для ASP.NET:

 <asp:SqlDataSource ...>
     <UpdateParameters>
         <asp:Parameter Type="Int32" Name="ObjectId" />
     </UpdateParameters>
 </asp:SqlDataSource>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...