ALTER PROCEDURE [dbo].[AddDepartment]
(
@D_id int,
@Catogery nvarchar(50),
@viewcat int
)
AS
if(@D_id =-1)
insert into Departments(Catogery, viewcat) values(@Catogery,@viewcat)
else
Update
Departments set
[email protected], viewcat= @viewcat where [email protected]_id
數據訪問代碼:我得到這個錯誤過程或函數「AddDepartment」需要參數「@D_id」,但未提供
public int AddDepartment(string D_id, string Catogery, string viewcat)
{
SqlCommand cmd = new SqlCommand("AddDepartment", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Catogery", Catogery);
cmd.Parameters.AddWithValue("@viewcat", viewcat);
cmd.Parameters.AddWithValue("@D_id", D_id);
return cmd.ExecuteNonQuery();
}
如果輸入值爲空,則會發生該錯誤。我會檢查每個參數值爲null,如果是則使用'DBNull.Value'。 – 2014-11-20 19:33:45
在你的cmd.Parameters.AddWithValue()我會用一些空的coalese類型檢查/賦值你熟悉如何做到這一點..?例如'cmd.Parameters.AddWithValue(「@ Catogery」,Catogery ?? DBNull.Value);' – MethodMan 2014-11-20 19:34:35
你應該看看[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/ jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already /)並停止使用'.AddWithValue()' - 它會導致意想不到的結果和令人驚訝的結果... – 2014-11-20 19:55:44