首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

存储过程的有关问题,大家帮忙~ 存储过程

2012-03-18 
存储过程的问题,大家帮忙~!!存储过程。我要做一个购物车的程序,其中@CID传递的是当前浏览的用户;@PID是当前

存储过程的问题,大家帮忙~!! 存储过程。
我要做一个购物车的程序,其中   @CID   传递的是当前浏览的用户;   @PID是当前用户正在浏览的货物号。

表   tosell   代表正在销售中的物品,其中PK   是   PID   ,外键   有   CID   (customer表中主键)

先检测   当前正在浏览的用户   @CID     是不是与     tosell   中的   CID   一样,如果一样,就不能把自己的物品放入购物车....后面的就不用说了吧   ,可是,为什么我得不到  
@flag=2的情况,就算是自己买自己的东西。       帮忙。。。。。


CREATE   PROCEDURE   Select_Insert_Cart_Proc
@CID   int,
@PID   int
AS
declare   @flag   int
declare   @tempID   int
set   @flag=0
select   top   1   @tempID   =   CID   from   tosell   where   PID=@CID

if   @CID   =   @tempID
begin
set   @flag=2
end

else
begin

if   not   exists(   select   *   from   cart   where   CID=@CID   and   PID=@PID)
begin
set   @flag=1
insert   into   cart   (CID,PID)   values   (@CID,@PID)
end
else
begin
set   @flag=-1
end
end

return   @flag
GO


@flag=2   代表 自己在企图买自己的东西 (不允许放入购物车)
@flag=1   代表 自己在买别人的东西,并且自己的购物车中没有这种东西 (放入购物车)
@flag=-1代表 自己在买别人的东西,但自己的购物车中已经有了这种东西 (重复放入购物车,不允许)

下面是调用存储过程的代码,看看对吗》帮忙
protected   void   Button1_Click(object   sender,   EventArgs   e)
        {
                if   (Session[ "CID "]   ==   null   ||   Session[ "CID "]   ==   " ")
                {
                        ShowMessage( "Please   Login.... ");
                        Response.Write( " <script> this.location.href= 'Default.aspx '; </script> ");
                        return;
                }
                string   cid   =   Session[ "CID "].ToString();

                using   (SqlConnection   Con   =   new   SqlConnection(ConfigurationManager.ConnectionStrings[ "SQLCONNECTIONSTRING "].ConnectionString))
                {
                        SqlCommand   Cmd   =   new   SqlCommand( "Select_Insert_Cart_Proc ",   Con);
                        Cmd.Connection.Open();
                        Cmd.CommandType   =   CommandType.StoredProcedure;

                        int   flag   =   0;

                        SqlParameter   CID   =   Cmd.Parameters.Add( "@CID ",   SqlDbType.Int);
                        SqlParameter   PID   =   Cmd.Parameters.Add( "@PID ",   SqlDbType.Int);




                        CID.Value   =   cid;
                        PID.Value   =   id;

                        flag   =   Cmd.ExecuteNonQuery();
                        Cmd.Connection.Close();
                        if   (flag   ==   1)
                        {
                                ShowMessage( "Cart   successfully. ");
                        }
                        if   (flag   ==   -1)
                        {
                                ShowMessage( "Can   not   cart   again   ! ");
                        }
                        if   (flag   ==   2)
                        {
                                ShowMessage( "Can   not   cart   yourselves '   product   ! ");
                        }
                }
                                             
        }



[解决办法]
存储过程:

CREATE PROCEDURE Select_Insert_Cart_Proc
@CID int,
@PID int
AS
declare @flag int

if exists(select 1 from tosell where PID=@CID)
select @flag = 2
else
begin
if not exists( select * from cart where CID=@CID and PID=@PID)
begin
set @flag=1
insert into cart (CID,PID) values (@CID,@PID)
end
else
begin
set @flag=-1
end
end

select @flag
GO

页面:

flag = Cmd.ExecuteNonQuery();
-->
falg = (int)cmd.ExecuteScalar();

[解决办法]
有错误啊,79 行未将对象引用设置到对象的实例。
______________________________________________
应该是没有查到任何结果,你直接在查询分析器里执行这句:
exec Select_Insert_Cart_Proc cid的值,pid的值
看看是什么结果

热点排行