Обновите статус, используя vb.net для обновления всех полей. - PullRequest
0 голосов
/ 23 марта 2012

Я создаю таблицу с помощью sql developer

create table tablenodes
(
nodeNo int , 
nodeName varchar2(50),
centerX int , 
centerY int,
radius number(7,2),
fileNo int
)

И я хочу обновить все поля в этой таблице, поэтому я написал следующий код:

Friend Function UpdateNodeToTable(ByVal FN As Integer, ByVal nd As classNode) As Boolean
    Try
        Dim con As New OracleConnection
        con.ConnectionString = "Persist Security Info=False;User ID=manal;password=manal;Data Source=xe"
        con.Open()
        Dim cmd As New OracleCommand
        cmd.CommandType = CommandType.Text
        cmd.Connection = con

        cmd.CommandText = "update tablenodes set nodeName=@NodeName, centerX = @NodeCenterX," & _
           "centerY=  @NodeCenterY , radius=  @NodeRadius where nodeNo= @nodeNum and fileno= @FileNum"


        cmd.Parameters.Add("@NodeNum", OracleDbType.Int32).Value = nd.pID
        cmd.Parameters.Add("@NodeName", OracleDbType.Varchar2).Value = nd.pName
        cmd.Parameters.Add("@NodeCenterX", OracleDbType.Int32).Value = nd.pCenter.X
        cmd.Parameters.Add("@NodeCenterY", OracleDbType.Int32).Value = nd.pCenter.Y
        cmd.Parameters.Add("@NodeRadius", OracleDbType.Double).Value = nd.pRadius
        cmd.Parameters.Add("@FileNum", OracleDbType.Int32).Value = FN


        Dim success As Boolean

        If cmd.ExecuteNonQuery() = 1 Then
            success = True
        Else
            success = False
        End If

        cmd.Dispose()
        con.Close()
        con.Dispose()
        Return success
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

End Function

У меня проблема с обновлением операторов, я не могу написать это правильно, каждый раз, когда я пытаюсь отредактировать это, выдает другую ошибку (ora-01036 недопустимое имя / номер переменной, пропущенное выражение, неверный идентификатор).

1 Ответ

1 голос
/ 23 марта 2012

Переменные связывания в вашем операторе UPDATE должны начинаться с двоеточия, а не с символа @

    cmd.CommandText = "update tablenodes set nodeName=:NodeName, centerX = :NodeCenterX," & _
       "centerY=  :NodeCenterY , radius=  :NodeRadius where nodeNo= :nodeNum and fileno= :FileNum"

И не было бы префикса, что вы устанавливаете параметры

    cmd.Parameters.Add("NodeNum", OracleDbType.Int32).Value = nd.pID
    cmd.Parameters.Add("NodeName", OracleDbType.Varchar2).Value = nd.pName
    cmd.Parameters.Add("NodeCenterX", OracleDbType.Int32).Value = nd.pCenter.X
    cmd.Parameters.Add("NodeCenterY", OracleDbType.Int32).Value = nd.pCenter.Y
    cmd.Parameters.Add("NodeRadius", OracleDbType.Double).Value = nd.pRadius
    cmd.Parameters.Add("FileNum", OracleDbType.Int32).Value = FN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...