using System.Data.SqlClient;
//如果存儲過程沒有輸入和輸出參數,而且不返回查詢結果
SqlCommand cmd = new SqlCommand("存儲過程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
//如果存儲過程帶輸入參數
SqlCommand cmd = new SqlCommand("存儲過程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("存儲過程輸入參數變量名", 數據類型));
//如cmd.Parameters.Add(new SqlParameter("@riqi", SqlDbType.DateTime, 8));
//把具體的值傳給輸入參數
cmd.Parameters["存儲過程輸入參數"].Value =具體的值;
//如cmd.Parameters["@riqi"].Value = this.textBox1.Text;
//執行存儲過程
cmd.ExecuteNonQuery();
//如果存儲過程帶輸出參數
SqlCommand cmd = new SqlCommand("存儲過程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("存儲過程輸出參數變量名", 數據類型));
cmd.Parameters["存儲過程輸出參數變量名"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
//顯示輸出參數的值cmd.Parameters["存儲過程輸出參數變量名"].Value
//如this.textBox3.Text = cmd.Parameters["@ItemCount"].Value.ToString();
//如果存儲過程帶輸出和輸出參數
SqlCommand cmd = new SqlCommand("存儲過程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("存儲過程輸入參數變量名", 數據類型));
cmd.Parameters["存儲過程輸入參數"].Value =具體的值;
cmd.Parameters.Add(new SqlParameter("存儲過程輸出參數變量名", 數據類型));
cmd.Parameters["存儲過程輸出參數變量名"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
//顯示輸出參數的值cmd.Parameters["存儲過程輸出參數變量名"].Value
//如this.textBox3.Text = cmd.Parameters["@ItemCount"].Value.ToString();
調用帶輸入參數的存儲過程
【例2】創建存儲過程AddNewCategory實現往Category表中添加新的商品類別,新的商品分類名稱CategoryName作爲輸入參數輸入。
CREATE PROCEDURE AddNewCategory
(@categoryName nvarchar(50))
AS
INSERT INTO Category (CategoryName) VALUES (@categoryName)
【例】調用上述存儲過程AddNewCategory
try
{
// 數據庫連接字符串
string connStr = "server=localhost;uid=sa;pwd=;database=eshop";
// 創建Connection 對象
SqlConnection conn = new SqlConnection(connStr);
// 打開數據庫連接
conn.Open();
SqlCommand cmd = new SqlCommand("AddNewCategory", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@categoryName", SqlDbType.NVarChar,50));
cmd.Parameters["@categoryName"].Value = this.textBox1.Text;
cmd.ExecuteNonQuery();
MessageBox.Show("插入成功");
}
catch
{
MessageBox.Show("操作不成功");
return;
}
調用帶輸入和輸出參數的存儲過程
【例1】創建存儲過程ShoppingCartItemCount獲取某購物車中購物種數並作爲輸出參數輸出,購物車編號CartID爲輸入參數。
CREATE Procedure [dbo].[ShoppingCartItemCount]
( @CartID nvarchar(50),
@ItemCount int OUTPUT
)
AS
SELECT @ItemCount = COUNT(ProductID) FROM ShoppingCart
WHERE CartID = @CartID
【例】調用上述存儲過程ShoppingCartItemCount
try
{
// 數據庫連接字符串
string connStr = "server=localhost;uid=sa;pwd=;database=eshop";
// 創建Connection 對象
SqlConnection conn = new SqlConnection(connStr);
// 打開數據庫連接
conn.Open();
SqlCommand cmd = new SqlCommand("ShoppingCartItemCount", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@CartID", SqlDbType.NVarChar,50));
cmd.Parameters["@CartID"].Value = this.textBox2.Text;
cmd.Parameters.Add(new SqlParameter("@ItemCount",SqlDbType.Int));
cmd.Parameters["@ItemCount"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
//顯示輸出參數的值cmd.Parameters["存儲過程輸出參數變量名"].Value
this.textBox3.Text = cmd.Parameters["@ItemCount"].Value.ToString();
}
catch
{
MessageBox.Show("操作不成功");
return;
}
原文:http://course.zjnu.cn/nyh/cyf/dbcourse/show.asp?id=374