asp.net 視圖 存儲過程 使用實例

視圖:

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");
            }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章