OleDbException: Липсва точка и запетая (;) в края на SQL оператора

Получих OleDbException, който казва, че „Липсва точка и запетая (;) в края на SQL израза.“ Обърках се дали изразът UPDATE е правилен или не. В моя код тествам израза за актуализиране с помощта на бутон. може ли някой да ми помогне Искам да добавя 1 към променливата, за да увелича нейната стойност; брой бутилки. Използвам Microsoft Access Database. Основният идентификатор е ID, след това Уникалният е room_number.

Това е моят код:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '====test number of bottles=============
    Dim bottlecount As Integer 'variable used in order to increase the value of no. of bottle/s used

    bottlecount = Form3.lblBottle.Text
    bottlecount += 1
    Form3.lblBottle.Text = bottlecount

    roomhold = 1

    Dim statement As String = "UPDATE tblPatientInfo SET bottle_used='" & bottlecount & "' WHERE room_number= '" & roomhold & "' ORDER BY ID ;"
    Dim cmd As New OleDbCommand

    With cmd
        .CommandText = statement
        .Connection = Conn
        Conn.Open()
        .ExecuteNonQuery()
    End With
    Conn.Close()

End Sub

===след прилагане на промените========== Това е моят код:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim bottlecount As Integer = CInt(Form3.lblBottle.Text) + 1
    Form3.lblBottle.Text = bottlecount

    roomhold = 1

    Dim statement As String = "UPDATE tblPatientInfo SET bottle_used = @bottlecount"
    statement &= "WHERE room_number = @roomhold"

     Dim cmd As New OleDbCommand

    With cmd

        .Connection = Conn
        .CommandType = CommandType.Text
        .CommandText = statement
        .Parameters.AddWithValue("@bottlecount", bottlecount)
        .Parameters.AddWithValue("@roomhold", roomhold)
        Conn.Open()
        .ExecuteNonQuery()
    End With

Conn.Close()

Всяка помощ ще бъде оценена. Благодаря!


person Catherine Takishima    schedule 11.09.2012    source източник


Отговори (2)


UPDATE не е позволено да има клауза ORDER BY. Ако искате актуализацията да бъде подредена, създайте подзаявка за нея, която съдържа подреден списък за актуализации. Когато използвате ADONet, моля, уверете се, че вашата заявка е параметри. Свикнете с SQLCommand and Parameters. Опитайте този редактиран код, ако ще ви свърши работа

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim bottlecount As Integer = cint(Form3.lblBottle.Text) + 1
    Form3.lblBottle.Text = bottlecount

    Dim roomhold AS Integer = 1

    Dim statement As String = "UPDATE tblPatientInfo SET bottle_used = @bottlecount " 
    statement &= "WHERE room_number = @roomhold  "
    Using conn as New SqlConnection("ConnectionStringHere")
        Using comm as New SqlCommand()
            With comm
                .Connection = conn
                .CommandType = CommandType.Text
                .CommandText = statement
                .Parameters.AddWithValue("@bottlecount", bottlecount )
                .Parameters.AddWithValue("@roomhold" , roomhold)
            End With
            Try
                conn.Open()
                comm.ExecuteNonQuery()
            Catch (ex as SQlException)
                ' add message here '
            Finally
                conn.Close()
            End Try
        End Using
    End Using
End Sub
person John Woo    schedule 11.09.2012
comment
Получих грешка от синтактична грешка (липсващ оператор) в израза на заявката „@bottlecountWHERE room_number = @roomhold“. Използвам OleDb - person Catherine Takishima; 11.09.2012
comment
@CatherineTakishima, може ли да добавите интервал тук @bottlecountWHERE? - person John Woo; 11.09.2012
comment
@CatherineTakishima не забравяйте да приемете отговора, за да избегнете ниска репутация в общността :) - person John Woo; 11.09.2012

Вие не поръчвате команди за актуализиране.

Dim statement As String = "UPDATE tblPatientInfo SET bottle_used='" & bottlecount & "' WHERE room_number= '" & roomhold & "'"
person asawyer    schedule 11.09.2012
comment
Използвах Order BY ID, защото искам да получа последния вмъкнат ред в базата данни. Не мога да използвам Order By в извлечението за актуализация? - person Catherine Takishima; 11.09.2012
comment
@CatherineTakishima Никога не сте посочили какъв тип база данни използвате, така че не знам как да ви дам точен отговор за това, но като цяло не, не можете да поръчате актуализация. Няма смисъл, тъй като актуализацията не връща никакви редове. - person asawyer; 11.09.2012
comment
@CatherineTakishima Актуализацията създава ли запис чрез тригер или нещо подобно? - person asawyer; 11.09.2012
comment
да чрез сериен порт получени данни - person Catherine Takishima; 11.09.2012
comment
@CatherineTakishima Изглежда, че има информацията, от която се нуждаете: mikesdotnetting.com/Article/54/ също съветът на Джон в неговия отговор е страхотен и трябва да го приложите. - person asawyer; 11.09.2012