Member 13734676 Ответов: 2

ORA-01008: не все переменные связаны - VB.NET веб-приложение


Я пишу книгу. VB.NET функция для обновления таблицы с четырьмя столбцами, как показано ниже. Он терпит неудачу каждый раз, за исключением ORA-01008: не все переменные связаны

Может кто-нибудь помочь?


Public Sub UpdateLog(ByVal intUserID As Integer, ByVal strDesc As String, ByVal intLogID As Integer)

Dim oraConn As OracleConnection

    Dim cmd As OracleCommand

    Try
        cmd = New OracleCommand
        cmd.Parameters.Clear()
        cmd.CommandText = "Insert Into Tbl_Trans_Log(UserID,TransID,TransDate,ActionDone) values (:userId,:logId,:transdate,:action)"
        cmd.CommandType = CommandType.Text
        cmd.BindByName = True

        cmd.Parameters.Add(":userId", OracleDbType.Int64).Value = intUserID
        cmd.Parameters.Add(":logId", OracleDbType.Int64).Value = intLogID
        cmd.Parameters.Add(":transdate", OracleDbType.Date).Value = DateTime.Now
        cmd.Parameters.Add(":action", OracleDbType.Varchar2).Value = strDesc

        oraConn = New OracleConnection(ConfigurationManager.ConnectionStrings("connString").ConnectionString)
        oraConn.Open()

        cmd.Connection = oraConn
        cmd.ExecuteNonQuery()



    Catch ex As Exception
        sWriteErrorLog("C:\", "log - sUpdateTransLog -> " & ex.Message)
    Finally
        oraConn.close()
    End Try

End Sub


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

Добавление точек с запятой в конце текста команды

Maciej Los

Попробуйте добавить пробел между [,] и [:].

2 Ответов

Рейтинг:
1

Member 13734676

Приведенный ниже код был написан для меня.

cmd = New OracleCommand


            cmd.Parameters.Clear()
            cmd.CommandText = "Insert Into Tbl_Trans_Log(UserID,TransID,TransDate,ActionDone) values (:userId,:logId,:transdate,:action)"
            cmd.CommandType = CommandType.Text
            cmd.BindByName = True

            cmd.Parameters.Add(New OracleParameter(":userId", OracleDbType.Int64)).Value = intUserID
            cmd.Parameters.Add(New OracleParameter(":logId", OracleDbType.Int64)).Value = intLogID
            cmd.Parameters.Add(New OracleParameter(":transdate", OracleDbType.Date)).Value = DateTime.Now
            cmd.Parameters.Add(New OracleParameter(":action", OracleDbType.Varchar2)).Value = strDesc

            oraConn = New OracleConnection(ConfigurationManager.ConnectionStrings("xxxxxxxxx").ConnectionString)
            oraConn.Open()

            cmd.Connection = oraConn
            cmd.ExecuteNonQuery()


Рейтинг:
0

Maciej Los

Попробуйте добавить пробелы между именами полей и именами параметров.

cmd.CommandText = "Insert Into Tbl_Trans_Log(UserID, TransID, TransDate, ActionDone) values(:userId, :logId, :transdate, :action)"


Member 13734676

Привет Мацей будет ли работать приведенный ниже код? потому что это как sysdate, который дает текущую дату при обновлении строки.

УМК.Свойства commandtext = "Tbl_Active_User обновить набор LoginDate=компания "Новые системы", где имя пользователя=имя пользователя"

или я должен добавить параметр для logindate как Datetime.Now