我的老师给了我功能以便使用存储过程:
public static int SPExecNonQuery
(string config,
string procName,
params object[] prm)
{
SqlConnection con = new SqlConnection();
con.ConnectionString =
System.Configuration.
ConfigurationManager.
ConnectionStrings[config].ConnectionString;
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = procName;
for (int i = 0; i < prm.Length - 1; i += 2)
{
string name = prm[i].ToString();
object value = prm[i + 1];
cmd.Parameters.AddWithValue(name, value);
}
SqlParameter prmReturn = new SqlParameter("@RETURN", SqlDbType.Int);
prmReturn.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(prmReturn);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return (int)prmReturn.Value;
}
但是当我使用它时,我总是得到值0.
这是我使用的存储过程:
ALTER PROCEDURE Ilan_InsertZoo
@zooName nvarchar(30),
@zooCountry nvarchar(30),
@zooStreet nvarchar(30),
@zooAdress nvarchar(30),
@numOfAnimals nvarchar(30),
@avgVisitorAMonth int,
@ticketPrice int,
AS
SET NOCOUNT ON;
INSERT INTO Ilan_TblZoos (ZooName, ZooCountry, ZooStreet, ZooAdress, NumOfAnimals, AvgVisitorAMonth, TicketPrice)
VALUES (@zooName, @zooCountry, @zooStreet, @zooAdress, @numOfAnimals, @avgVisitorAMonth, @ticketPrice)
有人可以告诉我为什么吗?我该怎么办?
感谢。
答案 0 :(得分:1)
我认为你的老师想知道插入是否成功。因此,您需要从存储过程中返回一个值。
---Put this code at the end of your stored procedure
DECLARE @Return int
SET @Return = @@ROWCOUNT
Return @Return
@@ ROWCOUNT将返回插入的行数。如果插入成功,那么你应该得到一个1。
您可能还想对存储过程中的错误进行一些研究。