我在c#中有一個功能是插入數據。它應該做的就是調用從我通過Fiddler提供的Request Body中給出的存儲過程。現在我試圖測試它,但我一直得到這個錯誤。SQLCommand在C#不提供參數
「過程或函數'spCreatePerson'需要參數'@first',它沒有提供。」
這裏是對象 -
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
public int PersonTypeId { get; set; }
}
這裏是請求主體 -
{"FirstName":"Test","LastName":"MuhFuh","Phone":"5555555555","Email":"[email protected]","PersonTypeId":1}
下面是函數調用的PROC-
public static int InsertData(string procName, Person p)
{
int rowsAffected = 0;
con = CreateConnection();
using (con)
{
cmd.CommandType = CommandType.StoredProcedure;
cmd = new SqlCommand("spCreatePerson", con);
cmd.Parameters.AddWithValue("@first", p.FirstName);
cmd.Parameters.AddWithValue("@last", p.LastName);
cmd.Parameters.AddWithValue("@email", p.Email);
cmd.Parameters.AddWithValue("@phone", p.Phone);
cmd.Parameters.AddWithValue("@pTypeID", p.PersonTypeId);
rowsAffected = cmd.ExecuteNonQuery();
}
return rowsAffected;
}
正如你可以看到我傳入參數,但得到這個錯誤。有沒有我在代碼中錯過的東西?我通過它,數據似乎傳遞得很好。
編輯
這裏是存儲程序 -
CREATE PROC [dbo].[spCreatePerson] @first nvarchar(100), @last
nvarchar(100), @email nvarchar(50), @phone nvarchar(100), @pTypeID int
AS
INSERT INTO Person(FirstName, LastName, Email, Phone, PersonTypeID)
VALUES(@first, @last, @email, @phone, @pTypeID)
GO
調試時,不'p.FirstName'包含值? – David
@David是的。正在從請求主體傳入「測試」。我調試了所有的數據似乎正在經歷。 –
你可以在這裏添加存儲的proc腳本到這個問題嗎? – Sujith