我创建了一个用于在表中插入值的存储过程。这是存储过程:
CREATE PROCEDURE [dbo].[insertproc]
@CollectionPersonName varchar(50),
@Address varchar(1500),
@ContactNo varchar(50),
@CreatedBy int,
@CreatedOn datetime
AS
BEGIN
SET NOCOUNT ON;
-- Insert statements for procedure here
insert into CollectionPersonDetails(CollectionPersonName, Address, ContactNo, CreatedBy, CreatedOn)
values(@CollectionPersonName, @Address, @ContactNo, @CreatedBy, @CreatedOn);
END
下面是我为在存储过程中传递参数和执行查询而编写的函数:
public static int SaveDataProcedure(tblCollectionPersonObj oSaveObj, int iUserId)
{
string query = "insertproc";
OdbcConnection conn = new OdbcConnection(Connect.ConnectionString());
OdbcCommand cmd = new OdbcCommand("insertproc",conn);
cmd.CommandText = query;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CollectionPersonName", oSaveObj.SCollectionPersonName);
cmd.Parameters.AddWithValue("@Address", oSaveObj.SAddress);
cmd.Parameters.AddWithValue("@ContactNo", oSaveObj.SPhoneNo);
cmd.Parameters.AddWithValue("@CreatedBy", iUserId);
cmd.Parameters.AddWithValue("@CreatedOn", CommonData.GetDateForDatabase(DateTime.Now));
cmd.Connection.Open();
int i= cmd.ExecuteNonQuery();
cmd.Connection.Close();
return i;
}
我收到一条错误,指出存储过程需要未提供的参数@collectionPersonName
。我也尝试过使用parameters.add
函数,但显示的错误相同。
当我通过代码调试时,我可以看到值,但是当执行到ExecuteNonQuery()
时,我得到了错误。这个错误可能非常愚蠢但是我没有&#39能够找到它。
请帮助。
答案 0 :(得分:0)
AddWithValue
方法将不会添加参数。
检查oSaveObj.SCollectionPersonName
是否为空,在这种情况下使用DBNull.Value
cmd.Parameters.AddWithValue("@CollectionPersonName", oSaveObj.SCollectionPersonNamу ?? DBNull.Value);