SqlDataSource InsertCommand и UpdateCommand выдают недопустимое имя/номер переменной"

Я пытаюсь вставить и обновить таблицу через SqlDataSource

<asp:SqlDataSource ID="SqlDataSource1" OnSelecting="SqlDataSource1_Selecting" runat="server" ConnectionString="<%$ ConnectionStrings:ORAConnString %>" ProviderName="<%$ ConnectionStrings:ORAConnString.ProviderName %>"
    SelectCommand="SELECT DEPT_NAME,CATEGORY_NAME FROM SDIX_TCKT_CATEGORY"
    InsertCommand="Insert into SDIX_TCKT_CATEGORY (DEPT_NAME,CATEGORY_NAME,MODIFIED_BY,MODIFIED_DTTM)  values(:DEPTNAME,:CATEGORYNAME,'','')"  
    UpdateCommand="Update SDIX_TCKT_CATEGORY set CATEGORY_NAME=:CATEGORYNAME,MODIFIED_BY='',MODIFIED_DTTM=SYSDATE where(DEPT_NAME=:DEPTNAME) "                                       >
    <InsertParameters>
        <asp:Parameter Name="DEPTNAME" />
        <asp:Parameter Name="CATEGORYNAME" />                                     
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="DEPTNAME" />
        <asp:Parameter Name="CATEGORYNAME" />
        <asp:Parameter Name="MODIFIED_BY" />
        <asp:Parameter Name="MODIFIED_DTTM" />
    </UpdateParameters>
</asp:SqlDataSource>

Мне нужно вставить нулевое значение для MODIFIED_BY,MODIFIED_DTTM при вставке новой записи?

Мне нужно обновить идентификатор пользователя (нужно получить из кода) и sysdate при обновлении записи в таблице?

Заранее спасибо. Любая помощь приветствуется...!


person Black    schedule 08.10.2018    source источник
comment
Ваш параметр ':CATEGORY_NAME' пишется по-разному в операторе и массиве имени параметра -> ':CATEGORYNAME'   -  person Andrew Mortimer    schedule 08.10.2018
comment
Я изменил CATEGORY_NAME на CATEGORYNAME.   -  person Black    schedule 08.10.2018
comment
Если вам нужно вставить NULL, то почему вы на самом деле вставляете пустую строку?   -  person jmcilhinney    schedule 08.10.2018
comment
Поправьте меня, если я ошибаюсь. Если я использую пустую строку (''), это вставит ноль в БД.   -  person Black    schedule 08.10.2018
comment
Можно ли установить значение из кода только для определенного параметра?   -  person Black    schedule 08.10.2018


Ответы (1)


DBNull.value вместо ''

или просто не указывать нулевые параметры.

EDIT 1: я говорю вам использовать DBNull.value, но я забыл, что использую его по коду

es. YourSqlcommand.Parameters.AddWithValue("@ParameterName", DBNull.value)

поэтому в вашем обновлении или вставке sql, вероятно, вам нужно использовать Sql NULL:

 Insert into SDIX_TCKT_CATEGORY (DEPT_NAME,CATEGORY_NAME,MODIFIED_BY,MODIFIED_DTTM) values(:DEPTNAME,:CATEGORYNAME,NULL,NULL)
person gsimo83    schedule 08.10.2018
comment
Не повезло, но я получаю ту же проблему. - person Black; 09.10.2018
comment
Вы можете попробовать: ‹asp:Parameter Name=MODIFIED_BY ConvertEmptyStringToNull=true/› - person gsimo83; 09.10.2018
comment
И я говорю вам использовать DBNull.value, но я забыл, что использую его по коду es. Sqlcommand.Parameters.AddWithValue(@ParameterName, DBNull.value), поэтому при обновлении или вставке sql, вероятно, вам придется использовать Sql NULL: вставить в SDIX_TCKT_CATEGORY (DEPT_NAME,CATEGORY_NAME,MODIFIED_BY,MODIFIED_DTTM) значения(:DEPTNAME,:CATEGORYNAME,NULL ,НУЛЕВОЙ) - person gsimo83; 09.10.2018