程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#中如何執行存儲過程,

c#中如何執行存儲過程,

編輯:C#入門知識

c#中如何執行存儲過程,


  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 using System.Windows.Forms;
 10 
 11 namespace 使用存儲過程
 12 {
 13     using System.Data.SqlClient;
 14     public partial class Form1 : Form
 15     {
 16         public Form1()
 17         {
 18             InitializeComponent();
 19         }
 20         string connStr = "Data Source=.;Initial Catalog=MySchoolMoreData;Integrated Security=True";
 21 
 22         #region 調用沒有參數的存儲過程 +void btnNoPARAMAS_Click(object sender, EventArgs e)
 23         /// <summary>
 24         /// 調用沒有參數的存儲過程
 25         /// </summary>
 26         /// <param name="sender"></param>
 27         /// <param name="e"></param>
 28         private void btnNoPARAMAS_Click(object sender, EventArgs e)
 29         {
 30             //SqlDataAdapter da = new SqlDataAdapter("select * from Student", connStr);
 31             SqlDataAdapter da = new SqlDataAdapter("usp_getAllStuInfo", connStr);
 32             DataTable dt = new DataTable();
 33             da.Fill(dt);
 34             this.dgvList.DataSource = dt;
 35         } 
 36         #endregion
 37 
 38         #region 調用有輸入參數的存儲過程 +void btnHasParamas_Click(object sender, EventArgs e)
 39         /// <summary>
 40         /// 調用有輸入參數的存儲過程
 41         /// </summary>
 42         /// <param name="sender"></param>
 43         /// <param name="e"></param>
 44         private void btnHasParamas_Click(object sender, EventArgs e)
 45         {
 46             SqlDataAdapter da = new SqlDataAdapter("usp_getStuInfoBySexAndCname", connStr);
 47             //1.如果傳入了存儲過程,必須告訴服務器按存儲過程進行處理,否則就會按sql語句進行處理
 48             da.SelectCommand.CommandType = CommandType.StoredProcedure;
 49             //2.創建存儲過程中所需要的參數,注意:名稱必須與存儲過程的參數名稱對應
 50             SqlParameter[] ps = { 
 51                                 new SqlParameter("@cname",this.cboClass.Text),//Text獲取顯示在下拉列表控件中的文本值
 52                                 new SqlParameter("@Sex",rdoMale.Checked?"男":"女")
 53                                 };
 54             //3.將參數傳遞給服務器使用
 55             da.SelectCommand.Parameters.AddRange(ps);
 56             DataTable dt = new DataTable();
 57             da.Fill(dt);
 58             this.dgvList.DataSource = dt;
 59         } 
 60         #endregion
 61 
 62         #region 加載班級下拉列表數據和Dgv控件的分頁數據 +void Form1_Load(object sender, EventArgs e)
 63         /// <summary>
 64         /// 加載班級下拉列表數據和Dgv控件的分頁數據
 65         /// </summary>
 66         /// <param name="sender"></param>
 67         /// <param name="e"></param>
 68         private void Form1_Load(object sender, EventArgs e)
 69         {
 70             #region 加載下拉列表數據
 71             SqlDataAdapter da = new SqlDataAdapter("select classid ,classname from classes where classid<@num", connStr);
 72             SqlParameter p = new SqlParameter("@num", 15);
 73             SqlParameter p2 = new SqlParameter("@num2", 150);
 74             da.SelectCommand.Parameters.Add(p2);
 75             da.SelectCommand.Parameters.Add(p);
 76             DataTable dt = new DataTable();
 77             da.Fill(dt);
 78             this.cboClass.DisplayMember = "classname";
 79             this.cboClass.ValueMember = "classid";
 80             this.cboClass.DataSource = dt;
 81             #endregion
 82 
 83             LoadDgvData();
 84         } 
 85         #endregion
 86 
 87         int pageIndex = 1; //當前頁索引
 88         //int pageCount = 5;
 89 
 90         #region 調用帶輸出參數和返回值的存儲過程 +void btnOutput_Click(object sender, EventArgs e)
 91         /// <summary>
 92         /// 調用帶輸出參數和返回值的存儲過程
 93         /// </summary>
 94         /// <param name="sender"></param>
 95         /// <param name="e"></param>
 96         private void btnOutput_Click(object sender, EventArgs e)
 97         {
 98             SqlDataAdapter da = new SqlDataAdapter("usp_GetCountByCnameAndSex", connStr);
 99             //1.如果傳入了存儲過程,必須告訴服務器按存儲過程進行處理,否則就會按sql語句進行處理
100             da.SelectCommand.CommandType = CommandType.StoredProcedure;
101             //2.創建存儲過程中所需要的參數,注意:名稱必須與存儲過程的參數名稱對應
102             SqlParameter[] ps = { 
103                                 new SqlParameter("@cname",this.cboClass.Text),//Text獲取顯示在下拉列表控件中的文本值
104                                 new SqlParameter("@Sex",rdoMale.Checked?"男":"女"),
105                                 //創建輸出參數的時候,沒有必要賦值
106                                 //創建一個輸出參數,服務器最終將輸出參數的值返回到這個參數對象的Value屬性中
107                                 new SqlParameter("@totalCount",100),
108                                 new SqlParameter("@cnt",SqlDbType.Int),
109                                 new SqlParameter("@result",SqlDbType.Int)
110                                 };
111             //3.一定要修改輸出參數的方向,否則服務器會將所有參數當成輸入參數進行處理,需要客戶端傳入值,如果沒有就報錯
112             ps[0].Direction = ParameterDirection.Input;//默認就是input,不設置也沒有關系
113             //ps[2].Direction = ParameterDirection.Output;//設置參數的方向為輸出參數
114             //指定方向,是向服務器發送返回對應類型輸出參數或者返回值的請求
115             ps[3].Direction = ParameterDirection.Output;
116             ps[4].Direction = ParameterDirection.ReturnValue;
117             //3.將參數傳遞給服務器使用
118             da.SelectCommand.Parameters.AddRange(ps);
119             DataTable dt = new DataTable();
120             da.Fill(dt);
121             this.dgvList.DataSource = dt;
122             this.lblMsg.Text = "總人數是:" + ps[2].Value + ",指定性別的人數是:" + ps[3].Value + ",返回值是:" + ps[4].Value;
123         } 
124         #endregion
125 
126         #region 下一頁 + void btnNext_Click(object sender, EventArgs e)
127         /// <summary>
128         /// 下一頁
129         /// </summary>
130         /// <param name="sender"></param>
131         /// <param name="e"></param>
132         private void btnNext_Click(object sender, EventArgs e)
133         {
134             if (pageIndex.ToString() == System.Configuration.ConfigurationManager.AppSettings["totalPageCount"])
135             {
136                 MessageBox.Show("沒有下一頁了");
137                 return;
138             }
139             pageIndex++;
140             LoadDgvData();
141         } 
142         #endregion
143 
144         #region 獲取分頁數據 +void LoadDgvData()
145         /// <summary>
146         /// 獲取分頁數據
147         /// </summary>
148         private void LoadDgvData()
149         {
150             string count = System.Configuration.ConfigurationManager.AppSettings["pageCount"];
151             SqlParameter[] ps ={
152                                 new SqlParameter("@pageIndex",pageIndex),
153                                 new SqlParameter("@pageCount",count),
154                                 new SqlParameter("@totalPageCount",SqlDbType.Int)
155                                };
156             ps[2].Direction = ParameterDirection.Output;//修改參數的方法為輸出參數--發送請求
157             this.dgvList.DataSource = SqlHelper.ExecuteTable("usp_getPageData", CommandType.StoredProcedure, ps);
158             System.Configuration.ConfigurationManager.AppSettings["totalPageCount"] = ps[2].Value.ToString();
159         } 
160         #endregion
161 
162         #region 上一頁 +void btnPre_Click(object sender, EventArgs e)
163         /// <summary>
164         /// 上一頁
165         /// </summary>
166         /// <param name="sender"></param>
167         /// <param name="e"></param>
168         private void btnPre_Click(object sender, EventArgs e)
169         {
170             if (pageIndex == 1)
171             {
172                 MessageBox.Show("沒有上一頁了");
173                 return;
174             }
175             pageIndex--;
176             LoadDgvData();
177         } 
178         #endregion
179     }
180 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved