全面优化ADO

2 Command

2.1 CommandType

  缺省值是adCmdUnknownADO会逐个判断你的CommandType,直到它认为合适为止,不建议采用。(在Recordset.OpenConnection.Execute的时候也可以用)

  adCmdText是照原样执行你的SQL语句,但是如果你的SQL Language是以下几种的话,通过使用别的CommandType就可以提高你的SQL语句执行效率

objCmd.Execute "Select * from table_name", adCmdText
可替换为objCmd.Execute "table_name",adCmdTable

objCmd.Execute "Exec proceuure_name",adCmdText
可替换为objCmd.Execute "proceuure _name", adCmdStoredProc

  还有很重要的一点就是,如果你的SQL语句没有返回记录集,如insertupdate等,那么使用adExecuteNoRecordsADO2.0)可以减低系统开销(可以加到adCmdText adCmdStoredProc上,如adCmdStoredProc + adExecuteNoRecords

  还有adCmdTableDirectadCmdFileADO2.0),我还不太清楚怎么用,adCmdFile可用于访问一个XML文件。

2.2 Prepared

  如果你需要重复的执行类似的SQL语句,那么你可以预编译你的SQL语句,提高的效率也很可观

objCmd.CommandText = "SELECT spell from TYPER.wordspell where word = ? "

objCmd.Prepared = True

objCmd.Parameters.Append objCmd.CreateParameter("word", adVarChar, , 2)

For i = 1 To Len(strName)

strChar = Mid(strName, i, 1)

objCmd("word") = strChar

Set objRS = objCmd.Execute

If objRS.EOF Then

strNamesame = strNamesame & strChar

Else

strNamesame = strNamesame & objRS("spell")

End If

Next ’i = 1 To Len(strName)