用简单的英语向你解释一下这里发生了什么:
rs.Open "batchinfo", oConn, adOpenKeyset, adLockOptimistic, adCmdTable
我需要做的是能够将值插入名为batchinfo的表中。这是开放的最佳方式吗?
我唯一要做的就是插入值。
答案 0 :(得分:2)
使用adCmdTable通常会导致ADO生成由OLE DB提供程序执行的select * from thetable
命令。如果更新生成的记录集,则提供程序(或实际上ADO)通常会生成update table set field = ?, ... WHERE ...
形式的语句。 WHERE子句是潜在的问题。如果表上有主键,则WHERE子句将包含更新记录的主键,因此在执行时相当有效。由于您只是插入值,因此应该生成简单的INSERT语句,并且应该非常高效。
请注意,如果提供商支持它,那么adCmdTableDirect将导致直接表打开,并且更新将非常有效。我不知道MySQL是否支持该选项;我认为很多提供商都不支持这一点。
答案 1 :(得分:0)
rs是RecordSet对象。 (记录集类似于内存表)这行代码使它打开与数据库的连接并获取数据,方法是调用名为“batchinfo”的存储过程,或者只选择名为table或view的所有行“batchinfo”。
此方法已完整记录here。
一种选择是打开记录集,更新内存中记录集中的值,然后调用Save()方法。 (有关示例以及如何以这种方式执行,请参阅this link。)
但是,这不是更新数据的最有效方法。你最好使用更新或插入命令
请参阅this教程
答案 2 :(得分:0)
我希望这会对你有所帮助。
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