保存在数据库中不起作用?!(VB.NET | OLE)

Eia*_*s.N 0 database vb.net oledb ms-access

我用下面的代码保存了用户编辑的内容,代码没有给我任何错误代码,但同时它没有做任何事情,数据仍然没有任何新的变化:

 Dim a As String
        a = comb3.Text & "/" & comb2.Text & "/" & comb1.Text
        Dim SavInto As New OleDb.OleDbCommand
        Dim ConStr As String = _
           "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & _
          Application.StartupPath & "\base.mdb"
        Dim Conn As New OleDbConnection(ConStr)
        Conn.Open()
        SavInto.Connection = Conn
        SavInto.CommandType = CommandType.Text
        SavInto.CommandText = "UPDATE tb SET Tasalsol = '" & _
       Trim(frm.tx1.Text) & _
           "' , anomber = '" & Trim(frm.TextBox2.Text) & _
         "' , nam= '" & Trim(frm.tx3.Text) & _
        "' , rotba= '" & Trim(frm.tx4.Text) & _
          "' , spesh= '" & Trim(frm.tx5.Text) & _
         "' , lastvstart= '" & a & _
           "'  WHERE Notes ='" & Trim(frm.tx8.Text) & "'"

        SavInto.ExecuteNonQuery()
        Conn.Close()

        With frm
            .tx1.Text = Me.tx1.Text
            .TextBox2.Text = Me.tx2.Text
            .tx3.Text = Me.tx3.Text
            .tx4.Text = Me.tx4.Text
            .tx5.Text = Me.tx5.Text
            .tx6.Text = a
            .tx8.Text = Me.tx8.Text

        End With
        frm.Show()
        Me.Close()
Run Code Online (Sandbox Code Playgroud)

我写了整个代码,那究竟是什么错误的 ?!谢谢你

注意:有些列的单元格中可能包含许多相同的数据.

Jon*_*eet 6

除了Mehrdad 关于使用参数化查询的非常明智的建议之外,你的WHERE子句看起来很奇怪.您确定要使用"备注"字段来确定要更新的行吗?这是tx8一个可编辑的领域?你为什么要修剪它?找到要更新的行的最佳方式似乎不太可能是通过一个名为"notes"的字段,它似乎是纯文本,可能需要修剪.

这将是很多更好地使用该行(或列)的ID有问题来更新它.

请注意,您没有查看返回值ExecuteNonQuery- 我怀疑它返回0,表示它没有更新任何行.你应该检查一下.

此外,您应该使用Using连接和命令的语句,以便即使抛出异常也会适当地处理它们.

不过要重申一下:使用参数化查询,而不是在SQL中嵌入值.像这样的查询让DBA哭了.