小二哥's blog

----zhangzs8896(小二)

导航

在.Net中调用Sql Server存储过程

Posted on 2004-10-15 19:14  小二哥  阅读(716)  评论(0编辑  收藏  举报
目的:通过调用存储过程,在aspx页面显示存储过程返回的数据集。
第一步:
在项目中加一个类文件(.cs),取名为:practice.cs
首先加一个访问sql的引用 using System.Data.SqlClient;
写一个返回DataSet的方法:
//使用sql生成的日历 --公历
  public DataSet calendar(string dt)
  {
   SqlDataAdapter MyAdapter= new SqlDataAdapter();
   SqlConnection myConnection = new SqlConnection("server=172.16.3.60;uid=sa;pwd=zhangzs;database=Mytest");
   //myConnection.ConnectionTimeout=36000;  //连接的超时时间
   MyAdapter.SelectCommand  = new SqlCommand("calendar", myConnection);
   MyAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
   SqlParameter pdt = new SqlParameter("@dt", SqlDbType.VarChar, 10);
   pdt.Value =dt;
   MyAdapter.SelectCommand.Parameters.Add(pdt);
   MyAdapter.SelectCommand.CommandTimeout=36000;  //查询的超时时间
   DataSet ds=new DataSet();
   myConnection.Open();
   try
   {
    MyAdapter.Fill(ds);
    return ds;
   }
   finally
   {
    myConnection.Close();
   } 
  }

第二步:
 在项目中添加一个aspx页面,我给他取名为:calendar.aspx
设计状态下,拉一个标签、文本框、按钮、DataGrid 分别取名为:My_Lab  My_TBox  My_Btn  MyDataGrid
在calendar.aspx.cs中
private void BindGrid()
  {
   try
   {
    string Sdt=My_TBox.Text.Trim();
    practice pt=new practice();
    DataSet ds=new DataSet();
    ds=pt.calendar(Sdt);
    MyDataGrid.DataSource=ds;
    MyDataGrid.DataBind();}
   catch{
       Response.Write("<script>window.alert(\"输入有误,请检查.....\");</script>");
     }
  }

 private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if(!IsPostBack)
   {
    My_TBox.Text=System.DateTime.Now.ToString("yyyy/MM/dd");
    BindGrid();   
   }
  }

 private void My_Btn_Click(object sender, System.EventArgs e)
  {
    BindGrid();
  }

  //寻找一个值,改变这个值所在单元格的背景颜色,为了显眼
  private void MyDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
   if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
   {
     for(int i=1;i<e.Item.Cells.Count;i++)
     {
      if(AddAtrr(e.Item.Cells[i].Text))
      {
        e.Item.Cells[i].BackColor =System.Drawing.Color.Red;
        e.Item.Cells[i].Text  ="√"+e.Item.Cells[i].Text; 
      }
     }     
   }
  }
  private bool AddAtrr(string nowDate)
  {
   if(nowDate==My_TBox.Text.Trim())
    return true;
   else
    return false;
  }

--效果图: