Mit Hilfe des Command-Objektes von ADO kann ich einer Tabelle einen Datensatz genauso zufügen, wie mit Recordset-Objekt. Das Command-Objekt bietet jedoch den Vorteil, die Datenbank auf eine Abfrage vorzubereiten(zu kompilieren) und diese Abfrage dann mit anderen Werten wiederholt auszuführen. 
Außerdem habe ich die Möglichkeit ein SQL-Statement unvollständig zu erstellen und das Statement kurz vor dem Ausführen zu vervollständigen (wie im Beispiel). Das bringt den Vorteil, daß ein durch Strings und Variablen erstelltes SQL-Statement einem zufälligen Fehler vorbeugt. 
                                                                             Hier ein Fall in dem es zu so einem Fehler kommen kann:
folgendes Statement läuft über mit dem Recordset- und dem Command-Objekt
        | strSQL = "INSERT INTO kunden(name,vorname) VALUES ('elbl',     'bernhard')" | 
dieses Statement verursacht im Recordset-Objekt einen Fehler
        | strSQL = "INSERT INTO kunden(name,vorname) VALUES ('O'Niel',     'James')" | 
da sich im Namen ein Apostrophe (') befindet. Für das Command-Objekt ist das kein Problem.
Warum? ist im Beispiel zu sehen!  
        <% ' ---------- Der Connectionstring  strConn =             "Provider=SQLOLEDB.1;Persist Security Info=False;User       ID=admin;"  strConn = strConn & "Initial       Catalog=Northwind;Data Source=W2KServer;" ' ---------- Instanziieren       und öffnen des Connection-Objektes set conn =       Server.CreateObject("ADODB.Connection")  conn.Open strConn '       ---------- Instanziieren des Command-Objektes set cm =       Server.CreateObject("ADODB.Command") ' ---------- Zu weisen der       geöffneten Connection  cm.ActiveConnection = conn ' ----------       CommandText(SQL-String) zuweisen  cm.CommandText = "INSERT INTO       be_command(b_text,b_zahl,b_name) VALUES(?,?,?);" ' ---------- Erstellen       einer kompilierten Version der Abfrage***  cm.Prepared = true '       ---------- Parameter       anfügen(FeldName,Typ,,Größe)  cm.Parameters.Append       cm.CreateParameter("b_text",adBSTR,,255)  cm.Parameters.Append       cm.CreateParameter("b_zahl",adInteger,,50)  cm.Parameters.Append       cm.CreateParameter("b_name",adBSTR,adParamInput,256)      ' ---------- Tabellen-Felder Werte übergeben  cm("b_text") =       "Brenner"  cm("b_zahl") = 2  cm("b_name") = "LiteOn" '       ---------- Ausführen bzw Speichern der Werte  cm.Execute '       ---------- Jetzt kann ich den Vorgang wiederholen  cm("b_text") =       "Monitor"  cm("b_zahl") = 5  cm("b_name") = "Eizo" '       ---------- Ausführen bzw Speichern der Werte  cm.Execute '       ---------- Connection schließen und zerstören  conn.Close set conn =                   nothing %>  | 
*** in dem ich die Eigenschaft "Prepared" des Command-Objektes auf true setze, sage ich der Datenbank, dass die Version des Statements kompiliert werden soll. Bei wiederholten ausführen ab einem 2.-en Execute spreche ich dann die kompilierte Version an. So erreiche ab dem 2.mal eine bessere Performance. Bei dem ersten Execute wird die Abfrage kompiliert. Dies braucht Zeit, die Abfrage ist beim 1.-en Execute mit Prepared also langsamer!