To modify records using DBStorage, read a record into a Dictionary or OrderForm object (using GetData, LookupData, or LookupMultipleData), modify the contents of the object, and then pass the object to CommitData to update the row.
To insert a new record into the database, initialize the appropriate data object, and then pass the object to InsertData to insert the row.
The following example adds an item to a shopping basket. First, a DBStorage object is created to access the database of active shopping baskets. Next, the GetData method is used to retrieve the basket for the current customer. Assuming the basket already exists, it is returned as an OrderForm object called mscsOrderForm
. It the basket does not already exist in the database, then an empty OrderForm object is created.
Next, the item is added to the OrderForm using the OrderForm object's AddItem method. Finally, the OrderForm is written to storage. If the OrderForm is new, the data is inserted using the InsertData method; if the order form already existed in the basket database, the revised data is committed using the CommitData method:
REM Create and initialize the OrderForm storage object
set mscsOrderFormStorage = Server.CreateObject("Commerce.DBStorage")
call mscsOrderFormStorage.InitStorage(MSCSSite.DefaultConnectionString, "Clocktower_basket", "shopper_id", "Commerce.OrderForm", "marshalled_order", "date_changed")
REM Create an OrderForm for the shopper's basket
created = 0
on error resume next
set mscsOrderForm = mscsOrderFormStorage.GetData(null, mscsShopperID)
on error goto 0
if IsEmpty(mscsOrderForm) then
set mscsOrderForm = Server.CreateObject("Commerce.OrderForm")
mscsOrderForm.shopper_id = mscsShopperID
created = 1
end if
REM Add the item to the basket
call mscsOrderForm.AddItem(product_sku, product_qty, 0)
REM Update the database
if created = 0 then
call mscsOrderFormStorage.CommitData(NULL, mscsOrderForm)
else
call mscsOrderFormStorage.InsertData(NULL, mscsOrderForm)
end if
Response.Redirect mscsPage.URL("basket.asp")
The CommitData and InsertData methods can store the data from the specified object into the database in two ways.
If the MarshallColumn parameter is specified and matching columns exist, then the corresponding data is stored both ways.