Member 13746151 Ответов: 1

Функция обновления не работает в VB.NET


В настоящее время я разрабатываю систему с использованием VB.NET-да. У меня есть следующий запрос на обновление. Этот запрос работает, когда я запускаю его в SQL Developer

UPDATE CCS2_TBL_INSPECTION_STANDARD SET CCSEQREVITEM = :CCSEQREVITEM, 
CCSREVEFFECTIVEDATE = TO_DATE(:CCSREVEFFECTIVEDATE,'DD/MM/YYYY') WHERE CCSEQID 
= :CCSEQID



Но когда я пытаюсь применить этот запрос в VB.net-это не сработает. На самом деле поток для этой функции обновления-это работа, но когда я обновляю данные, он не работает. Например, я хочу обновить имя с "Али" на "Абу", когда я нажимаю кнопку обновления, там всплывающее окно говорит, что "обновление успешно", но имя не меняется на "Абу", оно все еще "Али". Там нет никакой ошибки, когда я выполняю. Кто-нибудь знает?

Что я уже пробовал:

Protected Sub editInspectionRev(eqid As String)

    Dim xSQL As New System.Text.StringBuilder
    xSQL.AppendLine("UPDATE CCS2_TBL_INSPECTION_STANDARD")
    xSQL.AppendLine("SET")
    xSQL.AppendLine("CCSEQREVITEM = :CCSEQREVITEM, CCSREVEFFECTIVEDATE = TO_DATE(:CCSREVEFFECTIVEDATE,'DD/MM/YYYY')")
    xSQL.AppendLine("WHERE CCSEQID = :CCSEQID")

    Using cn As New OracleConnection(ConString)
        cn.Open()
        Dim cmd As New OracleCommand(xSQL.ToString, cn)
        cmd.Connection = cn


        cmd.Parameters.Add(":CCSEQREVITEM", txtRevContent.Text)
        cmd.Parameters.Add(":CCSREVEFFECTIVEDATE", txtRevEffDate.Text)


        cmd.Parameters.Add(":CCSEQID", eqid)

        cmd.ExecuteNonQuery()
        cn.Close()

    End Using
    success3.Visible = True
    DisplayRevisionDetails()

End Sub

1 Ответов

Рейтинг:
0

Maciej Los

Заменить этот:

Using cn As New OracleConnection(ConString)

с:
Using cn As New OracleConnection(ConString) _
	With {.CommandType = CommandType.Text, .BindByName = True}


Это должно помочь в распознавании параметров по их именам.

Более подробную информацию вы найдете здесь: Gotcha #1161: использование именованных параметров с Oracle ODP.NET[^]