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)
我写了整个代码,那究竟是什么错误的 ?!谢谢你
注意:有些列的单元格中可能包含许多相同的数据.
除了Mehrdad 关于使用参数化查询的非常明智的建议之外,你的WHERE子句看起来很奇怪.您确定要使用"备注"字段来确定要更新的行吗?这是tx8一个可编辑的领域?你为什么要修剪它?找到要更新的行的最佳方式似乎不太可能是通过一个名为"notes"的字段,它似乎是纯文本,可能需要修剪.
这将是很多更好地使用该行(或列)的ID有问题来更新它.
请注意,您没有查看返回值ExecuteNonQuery- 我怀疑它返回0,表示它没有更新任何行.你应该检查一下.
此外,您应该使用Using连接和命令的语句,以便即使抛出异常也会适当地处理它们.
不过要重申一下:请使用参数化查询,而不是在SQL中嵌入值.像这样的查询让DBA哭了.