[英]How to call a stored procedure in asp.net
我已經編寫了用於insert
, update
, delete
和select
單個存儲過程。 程序是:
ALTER PROCEDURE [dbo].[artdetails1]
(
@artdetailId int,
@artDescription varchar(50),
@artShortdesc varchar(50),
@artValidity varchar(50),
@artStatus varchar(50),
@StatementType varchar(50)
)
AS
BEGIN
BEGIN
IF @StatementType = 'Insert'
BEGIN
INSERT INFOartdetails(artDescription,artShortdesc,artValidity,artStatus)
values(@artDescription,@artShortdesc,@artValidity,@artStatus)
END
IF @StatementType = 'Select'
BEGIN
SELECT * FROM artdetails
END
IF @StatementType = 'Update'
BEGIN
UPDATE artdetails SET
artDescription=@artDescription,artShortdesc=@artShortdesc,
artValidity=@artValidity,artStatus=@artStatus
where artdetailId= @artdetailId
END
ELSE IF @StatementType = 'Delete'
BEGIN
UPDATE artist SET @artStatus= 'not available';
END
END
END
但是我對如何檢查C#代碼中的語句類型並調用此過程感到困惑。 請幫忙。 我是SQL新手。
首先,你不該在一個過程中進行選擇和更新。 您應該具有用於插入,更新,選擇和刪除的單獨過程。
但是,這是從C#調用插入過程的方式:
示例代碼:
using(var conn = new SqlConnection(connString)
{
using(var cmd = new SqlCommand("artdetails1", conn)
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@artdetailId", detailID);
cmd.Parameters.AddWithValue("@artDescription", description);
cmd.Parameters.AddWithValue("@artShortdesc", shortDesc);
cmd.Parameters.AddWithValue("@artValidity", validity);
cmd.Parameters.AddWithValue("@artStatus", status);
cmd.Parameters.AddWithValue("@StatementType","Insert");
conn.Open();
cmd.ExecuteNonQuery(); // No output to capture for an `INSERT`
}
}
存儲過程調用示例(假設您正在使用SQL Server)。 對於優秀的程序員是懶惰的規則,對於所有內容都擁有一個存儲過程是一個例外:
using(var conn = new SqlConnection(@"Server=.\SQL2008;Database=foo;Integrated Security=true")) {
var cmd = new SqlCommand("[dbo].[artdetails1]", conn);
cmd.Parameters.Add("@StatementType", SqlDbType.VarChar, 50).Value = "Insert";
// set all other parameters
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
cmd.ExecuteNonQuery();
}
下面概述了從c#調用存儲的proc的基本過程。
String connstr = @"Data Source=myserverName;Initial Catalog=myCatalogName;Integrated Security=True";
String statementType = "Select"; //just an example
SqlConnection conn = new SqlConnection(connstr);
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
cmd.CommandText = "StoredProcedureName";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
cmd.Parameters.Add("artdetailId", SqlDbType.Int).Value = 1;
cmd.Parameters.Add("@artDescription", SqlDbType.VarChar).Value = "myArtDescription";
cmd.Parameters.Add("@artShortdesc", SqlDbType.VarChar).Value = "myArtShortDesc";
cmd.Parameters.Add("@artValidity", SqlDbType.VarChar).Value = "myArtValidity";
cmd.Parameters.Add("@artStatus", SqlDbType.VarChar).Value = "myArtStatus";
cmd.Parameters.Add("@StatementType", SqlDbType.VarChar).Value = StatementType;
sql conn.Open();
if StatementType = "Select" {
reader = cmd.ExecuteReader();
// Use DataReader to access the data here.
)
else if StatementType = "Insert" || StatementType = "Update" || StatementType = "Delete"
rowsAffected = cmd.ExecuteNonQuery();
}
注意:該代碼未經測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.