现在的位置: 首页 > 综合 > 正文

asp.net 视图 存储过程 使用实例

2014年01月16日 ⁄ 综合 ⁄ 共 5577字 ⁄ 字号 评论关闭

视图:

USE [Train]

GO
/****** 对象:  View [dbo].[BookDetails]    脚本日期: 01/04/2012 10:18:52 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER view [dbo].[BookDetails] as (select distinct users_traininfo_bookinfo.trainid,
seatname,userid,bookinfo.bookid,booktime,bookinfo.seatid,startstation,endstation,price     
 from users_traininfo_bookinfo,bookinfo,traininfo_seat,seat,sestation,traininfo_sestation_type_seat
where
 bookinfo.bookid =users_traininfo_bookinfo.bookid
and users_traininfo_bookinfo.trainid=traininfo_seat.trainid
and bookinfo.seatid=traininfo_seat.seatid
and seat.seatid=bookinfo.seatid
and users_traininfo_bookinfo.trainid=traininfo_sestation_type_seat.trainid
and traininfo_sestation_type_seat.seid=sestation.seid
and users_traininfo_bookinfo.bookstate='1'
and bookinfo.bookid not in (select distinct bookinfo_reg.bookid from bookinfo_reg )

)

使用:

 SqlConnection con = DB.createConnection();
        con.Open();
        sql = "select trainid,typename,starttime,endtime,startstation,endstation,seatname,price from Details where startstation='" + start + "'and endstation='" + end + "'and typename='" + style + "'";
        SqlDataAdapter objCommand = new SqlDataAdapter(sql, con);
        DataSet ds = new DataSet();
        objCommand.Fill(ds);
        if (ds.Tables[0].Rows.Count == 0)
        {
            this.lbmess.Text = "对不起,目前没有你要查询的列车信息!!";   
        }

        //对PagedDataSource 对象的相关属性赋值
        PagedDataSource objPds = new PagedDataSource();
        objPds.DataSource = ds.Tables[0].DefaultView;

        //把PagedDataSource 对象赋给Repeater控件
        this.dldetail.DataSource = objPds;
        this.dldetail.DataBind();
        con.Close();

存储过程:(传参并获取返回值)

过程定义:

USE [Train]
GO
/****** 对象:  StoredProcedure [dbo].[BOOK]    脚本日期: 01/04/2012 10:23:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--//RETURN 0: 表示已经定了5张,不允许再订了;
  --//RETURN 1: 表示已经没有客户选择类型的座位了;
  --//RETURN 2: 表示订票成功;
--//////////////////////////////////////////////////////////
ALTER PROCEDURE [dbo].[BOOK]              --订票存储过程                                         

@P_TRAINID      VARCHAR(5),                --火车编号
@P_USERID       VARCHAR(20),                --用户编号
@P_SEATID       VARCHAR(5) ,                --座位类型编号
@DESCRIP        TEXT                        --描述

--////////////////////////////////////////////////////////////
AS
DECLARE         @P_LEFTSEATNUM   INT;                        --变量声明 
DECLARE         @P_NOWTIME         DATETIME;                   --系统当前时间
DECLARE         @P_HAVEDNUM        INT; 
--DECLARE         @P_NOW         DATETIME; 
DECLARE         @P_NOW         VARCHAR(50);  
                       --当前已订有效票的数量
SET         @P_NOWTIME = GETDATE();

SELECT  @P_NOW=CONVERT(VARCHAR(50), @P_NOWTIME,21);--类型转换
SELECT  @P_NOW=REPLACE(@P_NOW,':','');
SELECT  @P_NOW=REPLACE(@P_NOW,'-','');
SELECT  @P_NOW=REPLACE(@P_NOW,'.','');
--计算有效票的数量,并赋值给@HAVEDNUM
SELECT   @P_HAVEDNUM=COUNT(*)
FROM     USERS_TRAININFO_BOOKINFO
WHERE    USERS_TRAININFO_BOOKINFO.USERID = @P_USERID  AND  
         USERS_TRAININFO_BOOKINFO.BOOKSTATE = '1'  AND  
         USERS_TRAININFO_BOOKINFO.BOOKID  NOT IN( 
                                                  SELECT   BOOKINFO_REG.BOOKID
                                                  FROM     BOOKINFO_REG 
                                                 )
IF  @P_HAVEDNUM>=5 
   BEGIN
    RETURN  0;                                                                                  --超过允许订票数量最大值
   END
ELSE
   BEGIN 
      SELECT   @P_LEFTSEATNUM = TRAININFO_SEAT.LEFTSEATNUM
      FROM     TRAININFO_SEAT
      WHERE    TRAININFO_SEAT.TRAINID = @P_TRAINID   AND  TRAININFO_SEAT.SEATID = @P_SEATID;
    
      IF   @P_LEFTSEATNUM>0 
         BEGIN
            UPDATE TRAININFO_SEAT
            SET    TRAININFO_SEAT.LEFTSEATNUM=TRAININFO_SEAT.LEFTSEATNUM-1
            WHERE  TRAININFO_SEAT.TRAINID = @P_TRAINID   AND   TRAININFO_SEAT.SEATID = @P_SEATID;

INSERT INTO BOOKINFO
            VALUES(@P_NOW,@P_SEATID,'');

            INSERT INTO USERS_TRAININFO_BOOKINFO
            VALUES(@P_USERID,@P_TRAINID,@P_NOW,@P_NOWTIME,'1',@DESCRIP);
     
           
 
            RETURN 2;
         END                                                                         --成功订票    
      ELSE
         BEGIN
           RETURN 1; 
         END                                                                        --该座位类型的票售完
   END
使用  实例代码:

 int Index = ((GridViewRow)(myB.NamingContainer)).RowIndex;//获得行号
            string zan = ((Label)GridView1.Rows[Index].Cells[0].FindControl("Lbooks")).Text.ToString();

            SqlConnection con = DB.createConnection();
            con.Open();
            SqlCommand cmd = new SqlCommand("P_REG", con);
            cmd.CommandType = CommandType.StoredProcedure;

            //SqlParameter trainid = cmd.Parameters.Add("@BOOKID", SqlDbType.SmallDateTime);
            SqlParameter trainid = cmd.Parameters.Add("@BOOKID", SqlDbType.NVarChar,50);
            SqlParameter userid = cmd.Parameters.Add("@USERID", SqlDbType.NVarChar, 20);

            SqlParameter des = cmd.Parameters.Add("@P_REGREASON", SqlDbType.NText, 100);
            SqlParameter ret = cmd.Parameters.Add("@return", SqlDbType.Int);

            cmd.Parameters["@BOOKID"].Direction = ParameterDirection.Input;
            cmd.Parameters["@USERID"].Direction = ParameterDirection.Input;
            cmd.Parameters["@P_REGREASON"].Direction = ParameterDirection.Input;

            cmd.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
           // DateTime temt = new DateTime();
            //  ((Label)e.Rows[1].Cells[0].FindControl("Lbooks")).Text.ToString();
            // string zan = this.GridView1.DataKeys.[e.RowIndex]Columns[1].TFindControl("Lbooks")).Text.ToStri
            // zan= Convert.ToDateTime(zan).ToShortDateString();
            // temt = DateTime.Parse(zan);

             //cmd.Parameters["@BOOKID"].Value = temt;
            // cmd.Parameters["@USERID"].Value = Session["LoginID"].ToString();
            cmd.Parameters["@BOOKID"].Value = zan;
            cmd.Parameters["@USERID"].Value = "01";
            cmd.Parameters["@P_REGREASON"].Value = this.TBreason.Text;

            cmd.ExecuteNonQuery();
            int tem = (int)ret.Value;
            if (tem == 1)
            {
                Response.Write(" <script language=JavaScript> if(confirm( '点击后跳转到退订记录? ')) ; </script> "); 
               // Response.Write("<script > alert('退订成功!');</script>");
                Response.Redirect("~/regnotes.aspx");
            }
            else
            {
                Response.Write("<script language=JavaScript>if(confirm( '退订失败! ')) ;</script>");
                Response.Redirect("~/regnotes.aspx");
            }

抱歉!评论已关闭.