調用存儲過程時主要會涉及到兩種狀況:一種是執行而不需要返回值,例如刪除、修改等;另一種是執行並且要求有返回值,例如查詢。在C#中調用存儲過程時主要會用到兩個類SqlCommand和SqlDataAdapter,SqlCommand類的CommandType屬性可以獲取或設置要對數據源執行的Transact-SQL語句或存儲過程。當SqlCommand與存儲過程關聯起來之後就可以通過SqlCommand類來執行。另一種執行方法則是通過SqlDataAdapter類的Fill方法,SqlDataAdapter類的Fill方法不僅會執行存儲過程同時會將結果放入結果集中。
示例 C#中調用存儲過程 首先創建一個用於添加信息的存儲過程(Proc_InsertOfPelple)與一個用於查找信息的存儲過程(Proc_SelectOfPelple)。然後定義一個數據操作類(ClsDBProcControl)用於實現對表(t_People)的各種操作,ClsDBProcControl類中包括ConDB方法、Insert_Proc方法、select_Proc方法以及t_People表對應的實體類,在程序運行時當用戶單擊【添加信息】按鈕時,將把姓名和性別信息賦值給t_People表的屬性,然後通過調用Insert_Proc方法向數據表中插入新信息,當單擊【查詢信息】按鈕時,把姓名和性別信息賦值給t_People表的屬性,然後通過調用select_Proc方法查詢指定信息。程序代碼如下。
單擊【添加信息】按鈕時首先將姓名、性別信息賦給屬性str_Name與屬性str_Sex,然後再調用Insert_Proc方法實現插入信息功能。代碼如下:
private void button1_Click(object sender, EventArgs e)
{
ClsDB.ClsDBProcControl CBDP = new OptDB.ClsDB.ClsDBProcControl();
CBDP.str_Name = this.textBox2.Text.Trim().ToString();
CBDP.str_Sex = this.textBox3.Text.Trim().ToString();
if (CBDP.Insert_Proc(CBDP))
{
MessageBox.Show("插入成功");
CBDP.str_Name =string.Empty;
CBDP.str_Sex = string.Empty;
this.dataGridView1.DataSource = CBDP.select_Proc(CBDP).Tables[0].DefaultView;
}
}
單擊【查詢信息】按鈕時同樣是先將姓名、性別信息賦給屬性str_Name與屬性str_Sex,然後再調用select_Proc方法,select_Proc方法將返回一個DataSet對象用於結果顯示給用戶。代碼如下:
private void button2_Click(object sender, EventArgs e)
{
ClsDB.ClsDBProcControl CBDP = new OptDB.ClsDB.ClsDBProcControl();
CBDP.str_Name = this.textBox2.Text.Trim().ToString();
CBDP.str_Sex = this.textBox3.Text.Trim().ToString();
this.dataGridView1.DataSource = CBDP.select_Proc(CBDP).Tables[0].DefaultView;
}
t_People表對應實體,主要通過GET,SET訪問器定義屬性str_Name與屬性str_Sex。代碼如下:
#region//表對應的實體
private string strName;
public string str_Name
{
get
{
return this.strName;
}
set
{
strName = value;
}
}
private string strSex;
public string str_Sex
{
get
{
&n