ADODB:ADDNEW和UPDATE方法之间的区别?

l--*_*''' 2 mysql sql excel vba

我正在使用ADODB更新mysql中的表

如果我使用addnew或更新,我会在表中添加新条目?

Mic*_*uen 6

没有区别,您将始终使用.Update提交当前光标所指向的更改.AddNew在ADODB记录集的末尾分配新行

ADODB记录集是一个基于游标的数据集,当您将行加载到记录集中时,游标会自动在第一行,因此您在记录集的列上执行任何操作,它将在记录集游标当前指向的任何位置进行修改.例如:

dim rs as new adodb.recordset
rs.Open _
    " select emp_id, lastname, firstname, middlename, age from emp " & _
    " where location = 'LIVERPOOL'" & _
    " ORDER BY emp_id", connectionVariableHere
Run Code Online (Sandbox Code Playgroud)

这将更新第一行:

rs!middlename = "Ono"
rs.Update
Run Code Online (Sandbox Code Playgroud)

这将更新下一行:

rs.MoveNext
rs!middlename = "Eastman"
rs.Update
Run Code Online (Sandbox Code Playgroud)

添加记录(光标将移动到最后一条记录)

rs.AddNew
rs!lastname = "Ono"
rs!firstname = "Yoko"
rs!middlename = "Yasuda"
rs.Update
Run Code Online (Sandbox Code Playgroud)

执行上述步骤后,这将更新上次添加的记录:

rs!lastname = "Lennon"
rs.Update
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,MoveNext,MoveFirst等会在移动到新的光标位置之前隐式调用.Update,所以如果你在第一行......

rs.MoveFirst
Run Code Online (Sandbox Code Playgroud)

...然后你这样做:

rs!age = 70 ' lennon's age of 2010
rs.MoveNext
Run Code Online (Sandbox Code Playgroud)

......在转移到Paul McCartney之前,这将会调用.Update.无论如何,不​​要依赖它,只需要在行上提交更改时调用.Update