我收到一个错误,即没有提供参数@BuyerCode。它的默认值为“None”,并设置为C#可选参数。
我正在将Visual Studio调试器附加到Azure,抱歉。我正在使用Cloud Explorer。右键单击Web应用程序,附加调试器。
这对我来说真的很糟糕,不是说代码失败的WHICH行: cmd.ExecuteNonQuery() - 现在在代码中强调了这一行。谢谢你的耐心等待。
错误是“存储过程ISSI_SEARCH_ADDSEARCHRESULT需要未提供的参数@BuyerCode”,类似于此。
在我结束时,没有任何工作有点令人沮丧。真是令人失望,我只是没有清楚地沟通。
我放入了SQL的其余部分,抱歉,我无法将其格式化。安德烈在第一部分做到了这一点。我在编辑器中使用了{}符号。
以下是调用相关代码的代码段。我通过了硬编码值,显示在括号中。
private void addSearchResult(
string commandText
, int SearchId
, int SearchProviderId
, string OEMPartNumber //customer part number
, string ManufacturerPartNumber
, string CustomerPartDescription
, string VendorName
, string City
, string State
, decimal Quantity
, decimal SalePrice
, string AvailableStock = "None"
, decimal Cost = 0
, decimal ExpediteFee = 0
, **string BuyerCode = "None"** // there is a default provided
, string VendorPartName = "None"
, string CustomerPartName = "None"
, decimal LocationId = 0
, decimal VendorId = 0
, int PartId = 0
)
{
这是现在方法调用的最后一部分,传递了硬编码值:
, 0 //srList.Cost
, 0 //srList.ExpediteFee
, "None" //srList.BuyerCode
, "None" //srList.VendorPartName
, "None" //srList.CustomerPartName
, 0 //srList.LocationId
, 0 //srList.VendorId
, 0 //srList.PartId
以下是addSearchResult方法中的代码。我在其他帖子中唯一能找到的就是省略了我所拥有的这行代码,忽略强调它的星号:
SqlConnection cnx = new SqlConnection();
cnx.ConnectionString = ConxString;
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("SearchId", SearchId);
cmd.Parameters.AddWithValue("SearchProviderId", SearchProviderId);
cmd.Parameters.AddWithValue("CustomerPartNumber", OEMPartNumber);
cmd.Parameters.AddWithValue("ManufacturerPartNumber", ManufacturerPartNumber);
cmd.Parameters.AddWithValue("CustomerPartDescription", CustomerPartDescription);
cmd.Parameters.AddWithValue("VendorName", VendorName);
cmd.Parameters.AddWithValue("City", City);
cmd.Parameters.AddWithValue("State", State);
cmd.Parameters.AddWithValue("Quantity", Quantity);
cmd.Parameters.AddWithValue("SalePrice", SalePrice);
cmd.Parameters.AddWithValue("AvailableStock", AvailableStock);
cmd.Parameters.AddWithValue("Cost", Cost);
cmd.Parameters.AddWithValue("ExpediteFee", ExpediteFee);
cmd.Parameters.AddWithValue("BuyerCode", BuyerCode);
cmd.Parameters.AddWithValue("VendorPartName", VendorPartName);
cmd.Parameters.AddWithValue("CustomerPartName", CustomerPartName);
cmd.Parameters.AddWithValue("LocationId", LocationId);
cmd.Parameters.AddWithValue("VendorId", VendorId);
cmd.Parameters.AddWithValue("PartId", PartId);
cmd.Connection = cnx;
**cmd.CommandType = System.Data.CommandType.StoredProcedure;** <-- yep, this one's already here ... :)
cmd.CommandText = commandText;
cnx.Open();
*cmd.ExecuteNonQuery();* //failure point is right here -- this line throws the error.
cnx.Close();
SQL中的参数设置为NULL作为默认值,SQL的值中的参数顺序确实与输入匹配,顺便说一下:
ALTER PROCEDURE [dbo].[ISSI_SEARCH_ADDSEARCHRESULT]
(
@SearchId INT,
@SearchProviderId INT,
@CustomerPartNumber VARCHAR(100) NULL,
@ManufacturerPartNumber VARCHAR(100) NULL,
@CustomerPartDescription VARCHAR(1000) NULL,
@VendorName VARCHAR(100) NULL,
@City VARCHAR(100) NULL,
@State VARCHAR(50) NULL,
@Quantity NUMERIC(18,0) NULL,
@SalePrice NUMERIC(10,2) NULL,
@AvailableStock VARCHAR(50) NULL,
@Cost NUMERIC(10,2) NULL,
@ExpediteFee NUMERIC(10,2) NULL,
@BuyerCode VARCHAR(50) NULL,
@VendorPartName VARCHAR(1000) NULL,
@CustomerPartName VARCHAR(1000) NULL,
@LocationId INT NULL,
@VendorId INT NULL,
@PartId INT NULL
)
AS
BEGIN
INSERT INTO [dbo]。[visSearchResults] ( SearchId, SearchProviderId, CustomerPartNumber, 制造商零件编号 , CustomerPartDescription, 供应商名称 , 城市, 州, 数量, 销售价格 , 可用的股票, 成本, ExpediteFee, BuyerCode, VendorPartName, CustomerPartName, LocationId, VendorId, PartId, 创建 ) VALUES ( @SearchId, @SearchProviderId, @CustomerPartNumber, @制造商零件编号 , @CustomerPartDescription, @供应商名称 , @City, @State, @Quantity, @销售价格 , @AvailableStock, @Cost, @ExpediteFee, @BuyerCode, @VendorPartName, @CustomerPartName, @LocationId, @VendorId, @PartId, GETDATE() )
所以我已经尝试过了。查询在数据库级别运行。我检查了BuyerCode的外壳,这是对的。寻找领先或尾随的空白,这一切都很好。
我的智慧结束了。