这个ADO OPEN方法做什么?

用简单的英语,你可以向我解释这里发生了什么:

rs.Open "batchinfo", oConn, adOpenKeyset, adLockOptimistic, adCmdTable 

我需要做的是能够将值插入到一个名为batchinfo的表中。 这是做OPEN的最好方法吗?

我会做的唯一的事情就是插入值。

我希望这会帮助你。

 dim sql, value dim connection, rs sql = "SELECT * FROM batchinfo" value = "foo" set connection = Server.CreateObject("ADODB.Connection") set rs = server.CreateObject("ADODB.Recordset") connection.open "Provider=SQLOLEDB.1;Persist Security Info=True;Data Source=192.168.0.1;Initial Catalog=Northwind;User ID=userId;Password=1234" rs.open sql, connection, 0, 3, 1 rs.addNew rs("fieldName1") = replace(value, "''", "'") rs("fieldName2") = replace(value, "''", "'") rs.update rs.close set rs = nothing 

adCmdTable的使用通常会导致ADO select * from thetable由OLE DB提供程序执行的select * from thetable命令中生成select * from thetable 。 如果更新结果logging集,则提供者(或实际上在其上的ADO)通常会生成表格update table set field = ?, ... WHERE ...语句。 WHERE子句是潜在的问题。 如果表上有一个主键,那么WHERE子句将包含更新logging的主键,因此在执行时相当有效。 由于您只是插入值,因此应该生成简单的INSERT语句,并且应该非常高效。

请注意,如果提供商支持,则adCmdTableDirect将导致直接打开表,并且更新将非常有效。 我不知道MySQL是否支持这个选项; 我不认为很多提供者都支持这一点。

rs是RecordSet对象。 (logging集像内存表)这行代码使它打开到数据库的连接并获取数据,通过调用名为“batchinfo”的存储过程,或者可能只是从一个表或视图中select所有行“batchinfo”。

这个方法在这里完整的logging。

一个选项是打开logging集,更新logging集中的值,然后调用Save()方法。 (请参阅此链接的例子,以及如何做到这一点。)

但是,这不是更新数据的最有效的方法。 你最好使用更新或插入命令

看到这个教程