Click here to Skip to main content
Licence CPOL
First Posted 10 Mar 2003
Views 271,004
Bookmarked 64 times

Easy ASP.NET Shopping Cart

By | 10 Mar 2003 | Article
An easy to implement shopping cart for any database.

Sample Image - shopcart.gif

Introduction

If you take a look at my code, you will see that it is not well documented, but I will try and remedy that with this article. The shopping cart object that I will demonstrate here was written by me for use in an ecommerce web page, as part of a library.

Shopping Cart

Let's get right into the object. The following section will create our object. We pass the connection string from the web page so that it is common.

using System;
using System.Data;
using System.Data.OleDb;

namespace Coder2k
{
    public class Cart
    {
        private string strConnection;
        
        public Cart(string conn)
        {
            strConnection = conn;
        }

The following is where our web page will get its cart. We'll demonstrate that later. We use stored procedures so that we can use any database that has an OLE interface and supports stored procedures.

        public OleDbDataReader GetCart(string CartID)
        {
            OleDbConnection conCart = new OleDbConnection(strConnection);
            OleDbCommand comCart = new OleDbCommand("qryGetCart", conCart);
            
            comCart.CommandType = CommandType.StoredProcedure;
            
            OleDbParameter parmCartID = new 
              OleDbParameter("@CartID", OleDbType.VarChar, 50);
            parmCartID.Value = CartID;
            comCart.Parameters.Add(parmCartID);
            
            conCart.Open();
            
            OleDbDataReader result = 
              comCart.ExecuteReader(CommandBehavior.CloseConnection);
            
            return result;
        }

Now, let's look at the rest of it which is very similar to this. Because of stored procedures, we don't need to know anything about the database in this object, which makes it easier to code.

        public void AddItem(string CartID, int ProdID, int Quantity)
        {
            OleDbConnection conItem = new OleDbConnection(strConnection);
            OleDbCommand comItem = new OleDbCommand("qryAddItem", conItem);
            
            comItem.CommandType = CommandType.StoredProcedure;
            
            OleDbParameter parmCartID = new 
              OleDbParameter("@CartID", OleDbType.VarChar, 50);
            parmCartID.Value = CartID;
            comItem.Parameters.Add(parmCartID);
            
            OleDbParameter parmProdID = new 
              OleDbParameter("@ProdID", OleDbType.Integer, 4);
            parmProdID.Value = ProdID;
            comItem.Parameters.Add(parmProdID);
            
            OleDbParameter parmQuant = new 
              OleDbParameter("@Quant", OleDbType.Integer, 4);
            parmQuant.Value = Quantity;
            comItem.Parameters.Add(parmQuant);
            
            conItem.Open();
            comItem.ExecuteNonQuery();
            conItem.Close();
        }
        
        public string GetCartID()
        {
            System.Web.HttpContext context = 
                  System.Web.HttpContext.Current;
            
            if (context.Request.Cookies["West_CartID"] != null)
            {
                return context.Request.Cookies["West_CartID"].Value;
            }
            else
            {
                Guid tempGuid = Guid.NewGuid();
                
                context.Response.Cookies["West_CartID"].Value 
                                             = tempGuid.ToString();
                
                return tempGuid.ToString();
            }
        }
    }
}

Now, the getCartID function is a strange one. It checks to see if the current user has a cart. If they do, it returns that ID, otherwise, it creates a new cart.

Web Pages

I think that the web pages can pretty much speak for themselves if you know ASP web controls. In a later edition of this article, I will explain more on these files, and maybe add some more functionality to the whole thing.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Coder2k

Software Developer

Canada Canada

Member

I am a developer working with C# and .NET in open source projects.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralDoubt Pinmemberkaranrambo11:36 7 Nov '09  
GeneralRe: Doubt PinmemberCoder2k16:15 7 Nov '09  
GeneralAivea Commerce Server Pinmemberaiveacorporation13:42 30 May '09  
GeneralDAAB Pinmembersheemap21:58 23 May '09  
GeneralDAAB Pinmembersheemap21:57 23 May '09  
GeneralMy vote of 1 PinmemberMember 31624428:21 29 Dec '08  
GeneralUsless waste of time AVOID LIKE THE PLAUGE Pinmembersofwreng4:41 1 Jun '07  
GeneralRe: Usless waste of time AVOID _sofwreng_ LIKE THE PLAUGE Pinmemberrimblock3:29 26 Jun '07  
GeneralNeed Assistance Pinmemberpreetshweety0:22 2 Apr '07  
QuestionOrder Confirmation Pinmemberstixoffire0:04 20 Feb '07  
AnswerRe: Order Confirmation PinmemberCoder2k5:20 20 Feb '07  
GeneralRe: Order Confirmation Pinmemberstixoffire8:45 20 Feb '07  
GeneralRe: Order Confirmation PinmemberCoder2k9:11 20 Feb '07  
GeneralPlease Post Only Complete and Reviewed Project Pinmemberntorrisi7:47 7 Feb '06  
QuestionWhat if cookies are disabled? PinsussAnonymous18:23 8 Mar '05  
AnswerRe: What if cookies are disabled? PinmemberCoder2k5:39 9 Mar '05  
GeneralRe: What if cookies are disabled? PinmemberMike (PhilaNJ)4:05 9 Apr '05  
GeneralRe: What if cookies are disabled? PinsussAnonymous4:43 23 Oct '05  
GeneralRe: What if cookies are disabled? PinmemberMember 45956964:10 8 Dec '07  
Generali need help Pinmemberintense010119:09 29 Jun '04  
GeneralRe: i need help PinmemberMatt Redmond10:27 20 May '09  
QuestionWhere is the SQL needed for this sample? PinmemberChris Allen Wright2:20 4 Jun '04  
AnswerRe: Where is the SQL needed for this sample? PinmemberCoder2k10:42 21 Jun '04  
GeneralRe: Where is the SQL needed for this sample? Pinmemberdennym14:51 10 Mar '05  
GeneralRe: Where is the SQL needed for this sample? PinmemberCoder2k5:09 11 Mar '05  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web03 | 2.5.120528.1 | Last Updated 11 Mar 2003
Article Copyright 2003 by Coder2k
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid