ADO - Add Records in ADO
1. Ways to Add Records in ADO
There are three main methods to add data:
-
Using Recordset.AddNew → Best when you want to insert data interactively.
-
Using Connection.Execute → Best for simple insert queries.
-
Using Command Object → Best for stored procedures and parameterized inserts.
2. Method 1: Using Recordset.AddNew
The AddNew method lets you add a new row directly to the Recordset, then save it with the Update
method.
Syntax
Recordset.AddNew
Recordset("FieldName") = Value
Recordset.Update
Example in VB
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
' Open connection
conn.Open "Provider=SQLOLEDB;Data Source=MYPC\SQLEXPRESS;Initial Catalog=EmployeeDB;User ID=sa;Password=1234;"
' Open recordset with write access
rs.Open "Employees", conn, 1, 3 ' adOpenKeyset, adLockOptimistic
' Add new record
rs.AddNew
rs("FirstName") = "John"
rs("LastName") = "Doe"
rs("Salary") = 55000
rs.Update
MsgBox "New record added successfully!"
' Close objects
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
3. Method 2: Using Connection.Execute (Best for Fast Inserts)
This method executes an INSERT SQL statement directly.
Example in VB
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
' Open connection
conn.Open "Provider=SQLOLEDB;Data Source=MYPC\SQLEXPRESS;Initial Catalog=EmployeeDB;User ID=sa;Password=1234;"
' Insert a new record
conn.Execute "INSERT INTO Employees (FirstName, LastName, Salary) VALUES ('Alice', 'Smith', 60000)"
MsgBox "Record inserted successfully!"
conn.Close
Set conn = Nothing
When to Use:
-
For simple inserts without fetching data back.
-
Faster than
Recordset.AddNew
.
4. Method 3: Using Command Object (Best for Stored Procedures / Parameters)
The Command object is used for secure inserts, especially when working with user inputs.
Example in VB
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Set conn = New ADODB.Connection
Set cmd = New ADODB.Command
' Open connection
conn.Open "Provider=SQLOLEDB;Data Source=MYPC\SQLEXPRESS;Initial Catalog=EmployeeDB;User ID=sa;Password=1234;"
' Configure command
Set cmd.ActiveConnection = conn
cmd.CommandText = "INSERT INTO Employees (FirstName, LastName, Salary) VALUES (?, ?, ?)"
cmd.CommandType = 1 ' adCmdText
' Add parameters
cmd.Parameters.Append cmd.CreateParameter("FirstName", 200, 1, 50, "David") ' adVarChar
cmd.Parameters.Append cmd.CreateParameter("LastName", 200, 1, 50, "Brown")
cmd.Parameters.Append cmd.CreateParameter("Salary", 3, 1, , 70000) ' adInteger
' Execute insert
cmd.Execute
MsgBox "Record inserted successfully!"
conn.Close
Set cmd = Nothing
Set conn = Nothing
Advantages:
-
Prevents SQL Injection.
-
Best for inserting user-provided data safely.
-
Preferred for stored procedures.
5. Example: ADO Add in ASP Classic
<%
Dim conn, rs
Set conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
conn.Open "Provider=SQLOLEDB;Data Source=MYPC\SQLEXPRESS;Initial Catalog=EmployeeDB;User ID=sa;Password=1234;"
' Open recordset with write access
rs.Open "Employees", conn, 1, 3 ' adOpenKeyset, adLockOptimistic
' Add a new employee
rs.AddNew
rs("FirstName") = "Emma"
rs("LastName") = "Watson"
rs("Salary") = 65000
rs.Update
Response.Write "New record added successfully!"
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
%>
6. Example: ADO Add in VBScript
Dim conn
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=SQLOLEDB;Data Source=MYPC\SQLEXPRESS;Initial Catalog=EmployeeDB;User ID=sa;Password=1234;"
' Add record directly
conn.Execute "INSERT INTO Employees (FirstName, LastName, Salary) VALUES ('Sophia', 'Taylor', 72000)"
WScript.Echo "Record inserted successfully!"
conn.Close
Set conn = Nothing
7. Best Practices
-
Use
Connection.Execute
for fast inserts. -
Use Command parameters for user-provided inputs to prevent SQL Injection.
-
Always close Recordsets and Connections.
-
Use transactions if inserting multiple records.
-
Validate data before inserting into the database.